<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.meego.com/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.meego.com/index.php?title=Special:Contributions/Vesse&amp;feed=atom&amp;limit=50&amp;target=Vesse&amp;year=&amp;month=</id>
		<title>MeeGo wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.meego.com/index.php?title=Special:Contributions/Vesse&amp;feed=atom&amp;limit=50&amp;target=Vesse&amp;year=&amp;month="/>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Special:Contributions/Vesse"/>
		<updated>2013-05-19T08:13:43Z</updated>
		<subtitle>From MeeGo wiki</subtitle>
		<generator>MediaWiki 1.16.2</generator>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QAReports</id>
		<title>Quality/QA-tools/QAReports</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QAReports"/>
				<updated>2012-11-20T09:03:03Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= QA Reports =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding:20px;border:2px solid red;font-size:1.1em;&amp;quot;&amp;gt;This documentation is not updated anymore. For up-to-date information see [https://github.com/leonidas/qa-reports/wiki QA Reports wiki]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:MeeGoQAReports.png|right|415px]]&lt;br /&gt;
&lt;br /&gt;
[http://qa-reports.meego.com/ MeeGo QA reports] is test reporting application for anyone testing MeeGo. Introductory screencast is available at [http://www.youtube.com/watch?v=yr_IdmqGniE YouTube]. You can also [http://dl.dropbox.com/u/10001820/QA%20Reports%20tutorial%20part%201.mp4 download the video].&lt;br /&gt;
&lt;br /&gt;
== Access to MeeGo QA reports ==&lt;br /&gt;
&lt;br /&gt;
Access to '''publish''' MeeGo QA reports is provided on need and request basis. If you need access please file a request at [http://bugs.meego.com/enter_bug.cgi?product=MeeGo%20Quality%20Assurance MeeGo Quality Assurance &amp;gt; Others]&lt;br /&gt;
&lt;br /&gt;
You can also create yourself a test account at [http://qa-reports.qa.leonidasoy.fi/users/register staging environment] and play around with the system.&lt;br /&gt;
&lt;br /&gt;
== User Documentation == &lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/QAReports/Basic_Workflow|User guide]]&lt;br /&gt;
* [[Quality/QA-tools/QAReports/API|API Documentation]]&lt;br /&gt;
* [[Quality/QA-tools/QAReports/User_FAQ|F.A.Q]]&lt;br /&gt;
&lt;br /&gt;
== Administration Guide ==&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/QAReports/Setting_up_the_production_environment|Setting up the production environment]]&lt;br /&gt;
* [[Quality/QA-tools/QAReports/Admin_FAQ|F.A.Q]]&lt;br /&gt;
&lt;br /&gt;
== Environments == &lt;br /&gt;
&lt;br /&gt;
* [http://qa-reports.meego.com/ Production environment - http://qa-reports.meego.com]&lt;br /&gt;
* [http://qa-reports.qa.leonidasoy.fi/ Staging environment - http://qa-reports.qa.leonidasoy.fi/]&lt;br /&gt;
&lt;br /&gt;
== Source code == &lt;br /&gt;
&lt;br /&gt;
* [http://meego.gitorious.org/meego-quality-assurance/qa-reports Source code in Gitorious]&lt;br /&gt;
&lt;br /&gt;
== Developer information ==&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/QAReports/Setting_up_the_development_environment|Setting up the development environment]]&lt;br /&gt;
* [[Quality/QA-tools/QAReports/Contributing_to_qa-reports|Contributing to MeeGo QA Reports]]&lt;br /&gt;
&lt;br /&gt;
== Contact information ==&lt;br /&gt;
&lt;br /&gt;
QA Reports is developed by [[Quality/QA-tools | QA tools team]]. You can contact us via the following channels:&lt;br /&gt;
* [http://webchat.freenode.net/?channels=meego-qa #meego-qa IRC channel on irc.freenode.net]&lt;br /&gt;
* [http://bugs.meego.com/enter_bug.cgi?product=MeeGo%20Quality%20Assurance&amp;amp;component=meego-qa-reports File new bugs or improvement ideas to Bugzilla]&lt;br /&gt;
* [http://bugs.meego.com/buglist.cgi?bug_status=NEW&amp;amp;bug_status=NEEDINFO&amp;amp;bug_status=INDEFINITION&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=ACCEPTED&amp;amp;bug_status=WAITING%20FOR%20UPSTREAM&amp;amp;bug_status=WAITING&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=RELEASED&amp;amp;bug_status=VERIFIED&amp;amp;component=meego-qa-reports&amp;amp;query_format=advanced&amp;amp;order=priority%2Cbug_severity%2Cchangeddate%2Cbug_status%2Cassigned_to%2Cbug_id&amp;amp;query_based_on= Leave a comment or vote the items in our backlog]&lt;br /&gt;
* [http://lists.meego.com/listinfo/meego-qa meego-qa@lists.meego.com mailing list]&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment</id>
		<title>Quality/QA-tools/QAReports/Setting up the development environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment"/>
				<updated>2011-12-19T11:48:38Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Set up QA Reports */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
QA Reports is a Ruby on Rails application so you need to install a bunch of stuff to get it up and running. This documentation is based on Ubuntu 10.10&lt;br /&gt;
&lt;br /&gt;
==Install Ruby==&lt;br /&gt;
&lt;br /&gt;
Packaged version of Ruby tends to be pretty old and won't probably won't work very well. Thus this guide uses [http://rvm.beginrescueend.com/ Ruby Version Manager (rvm)].&lt;br /&gt;
&lt;br /&gt;
# Install dependencies:&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;$ sudo apt-get install build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev libqt4-dev&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install rvm: &amp;lt;tt&amp;gt;$ bash &amp;lt; &amp;lt;(curl -s https://rvm.beginrescueend.com/install/rvm)&amp;lt;/tt&amp;gt;   # NOTE: if network proxy blocks cloning via git proxy, try download the script and change git to http&lt;br /&gt;
# Follow the instructions printed once installation is ready&lt;br /&gt;
## Install needed packages - check section ''&amp;quot;For Ruby (MRI &amp;amp; ree)  you should install the following OS dependencies&amp;quot;''&lt;br /&gt;
## Enable loading of rvm - check section ''&amp;quot;You must now complete the install by loading RVM in new shells&amp;quot;''&lt;br /&gt;
### Edit &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; as described&lt;br /&gt;
### Restart your shell to have rvm enabled&lt;br /&gt;
# Install Ruby: &amp;lt;tt&amp;gt;$ rvm install ree&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Set into use: &amp;lt;tt&amp;gt;$ rvm use ree&amp;lt;/tt&amp;gt;&lt;br /&gt;
## If you want to use this ruby version as a default, use &amp;lt;tt&amp;gt;$ rvm --default use ree&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem update --system&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set up QA Reports==&lt;br /&gt;
&lt;br /&gt;
# Install preqrequisites: &lt;br /&gt;
## &amp;lt;tt&amp;gt;$ sudo apt-get install libmysqlclient-dev mysql-server libxml2-dev libxslt1-dev&amp;lt;/tt&amp;gt;&lt;br /&gt;
## &amp;lt;tt&amp;gt;$ gem install bundler --no-ri --no-rdoc&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Clone qa-reports from git: &amp;lt;tt&amp;gt;$ git clone git://gitorious.org/meego-quality-assurance/qa-reports.git&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ cd qa-reports&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ bundle install --without staging production&amp;lt;/tt&amp;gt; (If bundle install fails, run &amp;lt;tt&amp;gt;$ apt-get install libqt4-dev&amp;lt;/tt&amp;gt; first.)&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ cp config/database.example.yml config/database.yml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create MySQL user and two databases, one for development and the other for executing the tests&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ mysql -u root -p&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;mysql&amp;amp;gt; create user 'qa_reports'@'localhost' identified by '&amp;lt;password_of_your_choosing&amp;gt;';&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;mysql&amp;amp;gt; create database qa_reports_development;&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;mysql&amp;amp;gt; create database qa_reports_test;&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;mysql&amp;amp;gt; grant all on qa_reports_development.* to 'qa_reports'@'localhost';&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;mysql&amp;amp;gt; grant all on qa_reports_test.* to 'qa_reports'@'localhost';&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;mysql&amp;amp;gt; exit&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure QA Reports to use MySQL databases by editing &amp;lt;tt&amp;gt;config/database.yml&amp;lt;/tt&amp;gt; as shown below&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  development:&lt;br /&gt;
    adapter: mysql2&lt;br /&gt;
    encoding: utf8&lt;br /&gt;
    reconnect: false&lt;br /&gt;
    database: qa_reports_development&lt;br /&gt;
    pool: 5&lt;br /&gt;
    username: qa_reports&lt;br /&gt;
    password: &amp;lt;password_of_your_choosing&amp;gt;&lt;br /&gt;
    socket: /var/run/mysqld/mysqld.sock&lt;br /&gt;
  &lt;br /&gt;
  test:&lt;br /&gt;
    adapter: mysql2&lt;br /&gt;
    encoding: utf8&lt;br /&gt;
    reconnect: false&lt;br /&gt;
    database: qa_reports_test&lt;br /&gt;
    pool: 5&lt;br /&gt;
    username: qa_reports&lt;br /&gt;
    password: &amp;lt;password_of_your_choosing&amp;gt;&lt;br /&gt;
    socket: /var/run/mysqld/mysqld.sock&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run the migrations&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ bundle exec rake db:migrate&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add a release and a profile to the database&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ mysql -u &amp;amp;lt;user&amp;amp;gt; -p qa_reports_development&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;mysql&amp;amp;gt; INSERT INTO releases(name, sort_order) VALUES('1.3', 0);&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;mysql&amp;amp;gt; INSERT INTO profiles(name, sort_order) VALUES('Core', 0);&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;mysql&amp;amp;gt; exit&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Run the tests and start the server==&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ bundle exec rake spec&amp;lt;/tt&amp;gt;, all unit tests should pass&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ bundle exec rake cucumber&amp;lt;/tt&amp;gt;, all integration tests should pass&lt;br /&gt;
# Start the server: &amp;lt;tt&amp;gt;$ bundle exec rails server&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Register a new user for yourself: &amp;lt;tt&amp;gt;http://localhost:3000/users/register&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment</id>
		<title>Quality/QA-tools/QAReports/Setting up the development environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment"/>
				<updated>2011-12-19T11:47:53Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Set up QA Reports */ Added instructions for adding a release and a profile since at least one of each is required&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
QA Reports is a Ruby on Rails application so you need to install a bunch of stuff to get it up and running. This documentation is based on Ubuntu 10.10&lt;br /&gt;
&lt;br /&gt;
==Install Ruby==&lt;br /&gt;
&lt;br /&gt;
Packaged version of Ruby tends to be pretty old and won't probably won't work very well. Thus this guide uses [http://rvm.beginrescueend.com/ Ruby Version Manager (rvm)].&lt;br /&gt;
&lt;br /&gt;
# Install dependencies:&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;$ sudo apt-get install build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev libqt4-dev&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install rvm: &amp;lt;tt&amp;gt;$ bash &amp;lt; &amp;lt;(curl -s https://rvm.beginrescueend.com/install/rvm)&amp;lt;/tt&amp;gt;   # NOTE: if network proxy blocks cloning via git proxy, try download the script and change git to http&lt;br /&gt;
# Follow the instructions printed once installation is ready&lt;br /&gt;
## Install needed packages - check section ''&amp;quot;For Ruby (MRI &amp;amp; ree)  you should install the following OS dependencies&amp;quot;''&lt;br /&gt;
## Enable loading of rvm - check section ''&amp;quot;You must now complete the install by loading RVM in new shells&amp;quot;''&lt;br /&gt;
### Edit &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; as described&lt;br /&gt;
### Restart your shell to have rvm enabled&lt;br /&gt;
# Install Ruby: &amp;lt;tt&amp;gt;$ rvm install ree&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Set into use: &amp;lt;tt&amp;gt;$ rvm use ree&amp;lt;/tt&amp;gt;&lt;br /&gt;
## If you want to use this ruby version as a default, use &amp;lt;tt&amp;gt;$ rvm --default use ree&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem update --system&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set up QA Reports==&lt;br /&gt;
&lt;br /&gt;
# Install preqrequisites: &lt;br /&gt;
## &amp;lt;tt&amp;gt;$ sudo apt-get install libmysqlclient-dev mysql-server libxml2-dev libxslt1-dev&amp;lt;/tt&amp;gt;&lt;br /&gt;
## &amp;lt;tt&amp;gt;$ gem install bundler --no-ri --no-rdoc&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Clone qa-reports from git: &amp;lt;tt&amp;gt;$ git clone git://gitorious.org/meego-quality-assurance/qa-reports.git&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ cd qa-reports&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ bundle install --without staging production&amp;lt;/tt&amp;gt; (If bundle install fails, run &amp;lt;tt&amp;gt;$ apt-get install libqt4-dev&amp;lt;/tt&amp;gt; first.)&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ cp config/database.example.yml config/database.yml&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create MySQL user and two databases, one for development and the other for executing the tests&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ mysql -u root -p&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;mysql&amp;amp;gt; create user 'qa_reports'@'localhost' identified by '&amp;lt;password_of_your_choosing&amp;gt;';&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;mysql&amp;amp;gt; create database qa_reports_development;&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;mysql&amp;amp;gt; create database qa_reports_test;&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;mysql&amp;amp;gt; grant all on qa_reports_development.* to 'qa_reports'@'localhost';&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;mysql&amp;amp;gt; grant all on qa_reports_test.* to 'qa_reports'@'localhost';&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;mysql&amp;amp;gt; exit&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure QA Reports to use MySQL databases by editing &amp;lt;tt&amp;gt;config/database.yml&amp;lt;/tt&amp;gt; as shown below&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  development:&lt;br /&gt;
    adapter: mysql2&lt;br /&gt;
    encoding: utf8&lt;br /&gt;
    reconnect: false&lt;br /&gt;
    database: qa_reports_development&lt;br /&gt;
    pool: 5&lt;br /&gt;
    username: qa_reports&lt;br /&gt;
    password: &amp;lt;password_of_your_choosing&amp;gt;&lt;br /&gt;
    socket: /var/run/mysqld/mysqld.sock&lt;br /&gt;
  &lt;br /&gt;
  test:&lt;br /&gt;
    adapter: mysql2&lt;br /&gt;
    encoding: utf8&lt;br /&gt;
    reconnect: false&lt;br /&gt;
    database: qa_reports_test&lt;br /&gt;
    pool: 5&lt;br /&gt;
    username: qa_reports&lt;br /&gt;
    password: &amp;lt;password_of_your_choosing&amp;gt;&lt;br /&gt;
    socket: /var/run/mysqld/mysqld.sock&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run the migrations&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ bundle exec rake db:migrate&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add a release and a profile to the database&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ mysql -u &amp;amp;lt;user&amp;amp;gt; -p qa_reports_development&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;mysql&amp;amp;gt; INSERT INTO releases(name, sort_order) VALUES('1.3', 0);&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;mysql&amp;amp;gt; INSERT INTO profiles(name, sort_order) VALUES('Core', 0);&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;mysql&amp;amp;gt; exit&lt;br /&gt;
&lt;br /&gt;
==Run the tests and start the server==&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ bundle exec rake spec&amp;lt;/tt&amp;gt;, all unit tests should pass&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ bundle exec rake cucumber&amp;lt;/tt&amp;gt;, all integration tests should pass&lt;br /&gt;
# Start the server: &amp;lt;tt&amp;gt;$ bundle exec rails server&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Register a new user for yourself: &amp;lt;tt&amp;gt;http://localhost:3000/users/register&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_production_environment</id>
		<title>Quality/QA-tools/QAReports/Setting up the production environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_production_environment"/>
				<updated>2011-06-21T08:08:14Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Configuring data flow to QA Dashboard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Running and deploying QA Reports relies heavily on automated deployment scripts and version control repository. At high level, deployment process is following:&lt;br /&gt;
&lt;br /&gt;
# Log in to your workstation and update QA Reports working tree&lt;br /&gt;
# Run Capistrano deployment script on your workstation&lt;br /&gt;
# Capistrano script connects to the production server and updates the deployment by&lt;br /&gt;
## Connecting to version control system from production server and updating the source code on the production server&lt;br /&gt;
## Running the migrations and updating the database schema on production server&lt;br /&gt;
## Restarting the application on production server&lt;br /&gt;
&lt;br /&gt;
Capistrano enables you to automate also other administrative tasks like&lt;br /&gt;
# Rolling back to previous deployment&lt;br /&gt;
# Exporting data from production environment to your development environment&lt;br /&gt;
&lt;br /&gt;
To achieve all the goodness, you should [[Quality/QA-tools/QAReports/Setting up the development environment|set up the development environment]] on your workstation before continuing.&lt;br /&gt;
&lt;br /&gt;
= Setting up the production server =&lt;br /&gt;
&lt;br /&gt;
This guide has been written for vanilla Ubuntu 10.04 installation. You need to be logged in to the production server and have sudo rights to continue.&lt;br /&gt;
&lt;br /&gt;
== Install dependencies ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo aptitude install curl build-essential git-core openssh-server zlib1g-dev libssl-dev libreadline5-dev libcurl4-openssl-dev&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Ruby ==&lt;br /&gt;
&lt;br /&gt;
# Install [http://rvm.beginrescueend.com/ Ruby Version Manager] as root (to have system-wide install) &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;$ bash &amp;lt; &amp;lt;(curl -B http://rvm.beginrescueend.com/install/rvm)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Set up .bashrc as instructed by RVM installer: The whole content into an if section, and after that loading of RVM. Here's an example [http://gist.github.com/822216 .bashrc]&lt;br /&gt;
# Run: $ source ~/.bashrc&lt;br /&gt;
# Add your account and the deployment account to &amp;lt;code&amp;gt;rvm&amp;lt;/code&amp;gt; group, e.g.&amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;$ sudo adduser jakeskik rvm&amp;lt;/code&amp;gt;&lt;br /&gt;
# Source your .bashrc to enable rvm&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;$ source ~/.bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install Ruby Enterprise Edition&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;$ rvm install ree&amp;lt;/code&amp;gt;&lt;br /&gt;
# Set the default Ruby interpreter&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;$ rvm use --default ree&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install bundler&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;$ gem install rails bundler --no-ri --no-rdoc&amp;lt;/code&amp;gt; #if you have proxy problem, plz refer to http://docs.rubygems.org/read/chapter/13#page51&lt;br /&gt;
&lt;br /&gt;
Finally, enable rvm and Ruby Enterprise Edition to your deployment account, e.g. www-data&lt;br /&gt;
&lt;br /&gt;
# Edit &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; and change &amp;lt;code&amp;gt;www-data&amp;lt;/code&amp;gt;'s shell from &amp;lt;code&amp;gt;sh&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;bash&amp;lt;/code&amp;gt;. You might want to change the home directory also from &amp;lt;code&amp;gt;/var/www&amp;lt;/code&amp;gt; to e.g. &amp;lt;code&amp;gt;/home/www-data&amp;lt;/code&amp;gt; as shown below&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;www-data:x:33:33:www-data:/home/www-data:/bin/bash&amp;lt;/code&amp;gt;&lt;br /&gt;
# Enable RVM as shown below&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ sudo adduser www-data rvm&lt;br /&gt;
  $ sudo -iu www-data&lt;br /&gt;
  $ cp ~jakeskik/.profile .&lt;br /&gt;
  $ cp ~jakeskik/.bashrc .&lt;br /&gt;
  $ exit&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Apache and Phusion Passenger ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ sudo apt-get install apache2 apache2-prefork-dev libapr1-dev libaprutil1-dev&lt;br /&gt;
  $ gem install passenger --no-ri --no-rdoc&lt;br /&gt;
  $ rvmsudo passenger-install-apache2-module # Follow the on-screen instructions and edit apache.conf&lt;br /&gt;
  $ sudo service apache2 restart&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install MySQL ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ sudo apt-get install mysql-server libmysqlclient-dev&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Postfix ==&lt;br /&gt;
&lt;br /&gt;
QA Reports sends email notifications for system administrators (you) in case the application throws an exception. To enable notifications, there needs to be a mail server configured on the production host.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ sudo apt-get install postfix&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default configuration is fine and allows only delivery for emails originated from localhost. Just click through the installer.&lt;br /&gt;
&lt;br /&gt;
== Test the environment ==&lt;br /&gt;
&lt;br /&gt;
After installing the software, run a sanity check for the environment by creating a 'hello world' rails project and corresponding virtual host:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ sudo -iu www-data&lt;br /&gt;
 $ rails new hello&lt;br /&gt;
 $ cd hello/public &amp;amp;&amp;amp; pwd&lt;br /&gt;
 /home/www-data/hello/public&lt;br /&gt;
 $ exit&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Write a following virtual host declaration to /etc/apache/sites-available/hello:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName hello.qa.leonidasoy.fi&lt;br /&gt;
      DocumentRoot /home/www-data/hello/public&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /home/www-data/hello/public&amp;gt;&lt;br /&gt;
         AllowOverride all&lt;br /&gt;
         Options -MultiViews&lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
   &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable the virtual host&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ sudo a2ensite hello&lt;br /&gt;
  $ sudo service apache2 restart&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add the virtual host to &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; file:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  127.0.0.1 hello.qa.leonidasoy.fi # Use the same domain as above&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you should be able to access the 'hello world' project with a browser, e.g. lynx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ lynx hello.qa.leonidasoy.fi&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create a database for QA Reports ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ mysql -u root -p&lt;br /&gt;
 mysql&amp;gt; create user 'qa-reports'@'localhost' identified by 'somepasswordofyourchoosing';&lt;br /&gt;
 mysql&amp;gt; create database qa_reports_production character set 'utf8';&lt;br /&gt;
 mysql&amp;gt; grant all privileges on qa_reports_production.* to 'qa-reports'@'localhost';&lt;br /&gt;
 mysql&amp;gt; flush privileges;&lt;br /&gt;
 mysql&amp;gt; exit&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create virtual host for QA Reports ==&lt;br /&gt;
&lt;br /&gt;
Write a following virtual host declaration to /etc/apache/sites-available/qa-reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName qa-reports.qa.leonidasoy.fi&lt;br /&gt;
      DocumentRoot /home/www-data/qa-reports.meego.com/current/public&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /home/www-data/qa-reports.meego.com/current/public&amp;gt;&lt;br /&gt;
         AllowOverride all&lt;br /&gt;
         Options -MultiViews&lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
   &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable the virtual host&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ sudo a2ensite qa-reports&lt;br /&gt;
  $ sudo service apache2 restart # Don't mind the warning about missing dir,&lt;br /&gt;
                                 # we'll deal with that one in a sec&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Deploying QA Reports =&lt;br /&gt;
&lt;br /&gt;
QA Reports uses Capistrano to automate the deployments. The main benefit is to eliminate the risks of human errors and to enable easy and repeatable rollbacks. See [http://github.com/capistrano/capistrano/wiki Capistrano documentation] for the details.&lt;br /&gt;
&lt;br /&gt;
Capistrano is run from your development environment, so you should be now on &amp;lt;b&amp;gt;your workstation&amp;lt;/b&amp;gt; with working QA Reports development environment to continue.&lt;br /&gt;
&lt;br /&gt;
== Enable public key authentication for your deployment account ==&lt;br /&gt;
&lt;br /&gt;
Set up public key authentication:&lt;br /&gt;
# Generate yourself as SSH key pair if you don't have one: &amp;lt;tt&amp;gt;$ ssh-keygen&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Add your public key to &amp;lt;tt&amp;gt;authorized_keys&amp;lt;/tt&amp;gt; file of your production environment user: &amp;lt;br&amp;gt; &amp;lt;tt&amp;gt;$ ssh your.production.user@your.production.host 'mkdir .ssh; echo '`cat ~/.ssh/id_rsa.pub`' &amp;gt;&amp;gt; ~/.ssh/authorized_keys'&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Try logging in: &amp;lt;tt&amp;gt;ssh your.production.user@your.production.host&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modify Capistrano scripts and deploy QA Reports ==&lt;br /&gt;
&lt;br /&gt;
QA Reports uses following scripts to configure Capistrano&lt;br /&gt;
* &amp;lt;tt&amp;gt;config/deploy.rb&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;config/deploy/staging.rb&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;config/deploy/production.rb&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want to review all the files, but usually it's enough to update only &amp;lt;tt&amp;gt;config/deploy/production.rb&amp;lt;/tt&amp;gt; according to your needs (servers, deployment account, ssh options). You can also create new deployment environment just by copying the production.rb, to e.g. internal.rb and modify it.&lt;br /&gt;
&lt;br /&gt;
Once the Capistrano is updated according to your needs, run &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ cap production deploy:setup # or cap internal deploy:setup, if you created a new deployment environment&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setup command creates the folder hierarchy and the symbolic links required by Capistrano. During the setup it requests following information&lt;br /&gt;
# Database host&lt;br /&gt;
# Database port&lt;br /&gt;
# Database name&lt;br /&gt;
# Database username&lt;br /&gt;
# Database password&lt;br /&gt;
# Should QA Reports send performance data to [http://newrelic.com NewRelic]? (Default: no)&lt;br /&gt;
# Registration token. This will be part of the registration url, e.g. &amp;lt;tt&amp;gt;foobar&amp;lt;/tt&amp;gt; will make registration to be at url &amp;lt;tt&amp;gt;/users/foobar/register&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Email addresses for Exception Notifier&lt;br /&gt;
&lt;br /&gt;
Once the setup is complete, the deployment is as easy as it gets&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cap production deploy:migrations&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should now have QA Reports up&amp;amp;running. Congrats!&lt;br /&gt;
&lt;br /&gt;
== Update QA Reports to a new version ==&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;git pull&amp;lt;/code&amp;gt; (In case there's changes in the deployment scripts)&lt;br /&gt;
# &amp;lt;code&amp;gt;cap production deploy:migrations&amp;lt;/code&amp;gt;&lt;br /&gt;
# Ta-da!&lt;br /&gt;
&lt;br /&gt;
== Roll back to previous version ==&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;cap production deploy:rollback&amp;lt;/code&amp;gt;&lt;br /&gt;
# Ta-da!&lt;br /&gt;
&lt;br /&gt;
= Configuring data flow to QA Dashboard =&lt;br /&gt;
&lt;br /&gt;
If you have set up [[Quality/QA-tools/QADashboard|QA Dashboard]] you will most likely want to enable data synchronization to it:&lt;br /&gt;
&lt;br /&gt;
* Get authentication token to QA Dashboard&lt;br /&gt;
** This is currently a bit cumbersome: you need to open URI &amp;lt;tt&amp;gt;/user/token&amp;lt;/tt&amp;gt; from your QA Dashboard server, save the file it offers to download and get the token from there.&lt;br /&gt;
* Configure QA Reports&lt;br /&gt;
** Insert correct QA Dashboard host and the authentication token to &amp;lt;tt&amp;gt;config/qa-dashboard_config.yml&amp;lt;/tt&amp;gt;. The file is deployed with Capistrano task &amp;lt;tt&amp;gt;deploy:setup&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you need to export all your QA Reports data to your QA Dashboard you should use QA Reports' rake task. Once you have QA Reports up and running with correct QA Dashboard export setup, login to the production environment, go to folder &amp;lt;tt&amp;gt;your_installation/current&amp;lt;/tt&amp;gt; and execute &amp;lt;tt&amp;gt;RAILS_ENV=production rake db:export_to_qadashboard&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Note: If you need to clear existing data from your QA Dashboard database, you will need to execute both &amp;lt;tt&amp;gt;db['qa-reports'].drop()&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;db['qa-reports'].dropIndexes()&amp;lt;/tt&amp;gt; in the MongoDB database.&lt;br /&gt;
&lt;br /&gt;
= Setting Up the Production Environment with nginx instead of Apache =&lt;br /&gt;
&lt;br /&gt;
# Follow instructions above until &amp;quot;Install Apache and Passenger&amp;quot;, then continue here from step 2.&lt;br /&gt;
# Install passenger: &amp;lt;tt&amp;gt;$ gem install passenger&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install nginx: &amp;lt;tt&amp;gt;$ passenger-install-nginx-module&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Notice: the default location is under &amp;lt;tt&amp;gt;/opt&amp;lt;/tt&amp;gt;. If you wish to install there, use &amp;lt;tt&amp;gt;rvmsudo&amp;lt;/tt&amp;gt;. Notice however, that part of your &amp;lt;tt&amp;gt;~/.rvm&amp;lt;/tt&amp;gt; contents will then belong to root and may cause gray hair later. I chose to install under &amp;lt;tt&amp;gt;~/nginx&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Edit nginx configuration &amp;lt;tt&amp;gt;installation_path/conf/nginx.conf&amp;lt;/tt&amp;gt;:&lt;br /&gt;
## Comment out section &amp;lt;tt&amp;gt;location / { ... }&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Add lines:&lt;br /&gt;
### &amp;lt;tt&amp;gt;passenger_enabled on;&amp;lt;/tt&amp;gt;&lt;br /&gt;
### &amp;lt;tt&amp;gt;root /home/your_prod_env_user/qa-reports.meego.com/current/public;&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Start nginx: &amp;lt;tt&amp;gt;$ sudo /installation_path/sbin/nginx&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Continue with the guide above from &amp;quot;Deploying QA Reports&amp;quot;&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QADashboard/Setting_up_the_production_environment</id>
		<title>Quality/QA-tools/QADashboard/Setting up the production environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QADashboard/Setting_up_the_production_environment"/>
				<updated>2011-06-21T07:59:02Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Running and deploying QA Dashboard relies heavily on automated deployment scripts and version control repository. At high level, deployment process is following:&lt;br /&gt;
&lt;br /&gt;
# Log in to your workstation and update QA Dashboard working tree&lt;br /&gt;
# Run Capistrano deployment script on your workstation&lt;br /&gt;
# Capistrano script connects to the production server and updates the deployment by&lt;br /&gt;
## Connecting to version control system from production server and updating the source code on the production server&lt;br /&gt;
## Installing node package dependencies&lt;br /&gt;
## Restarting the application on production server&lt;br /&gt;
&lt;br /&gt;
= Setting up the local environment for deployments =&lt;br /&gt;
&lt;br /&gt;
QA Dashboard uses Capistrano to automate the deployments. The main benefit is to eliminate the risks of human errors and to enable easy and repeatable rollbacks. See [http://github.com/capistrano/capistrano/wiki Capistrano documentation] for the details&lt;br /&gt;
&lt;br /&gt;
== Install development environment ==&lt;br /&gt;
&lt;br /&gt;
You should first [http://wiki.meego.com/Quality/QA-tools/QADashboard/Setting_up_the_development_environment set up the development environment] on your workstation before continuing.&lt;br /&gt;
Capistrano is run from your development environment&lt;br /&gt;
&lt;br /&gt;
== Installing Capistrano ==&lt;br /&gt;
&lt;br /&gt;
Capistrano requires Ruby. If you do not have Ruby installed please follow the &amp;quot;Install Ruby&amp;quot; instructions [http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$ gem install capistrano&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Setting up the production server =&lt;br /&gt;
&lt;br /&gt;
== Install dependencies ==&lt;br /&gt;
&lt;br /&gt;
The same dependencies are needed in the production server as in development environment.&lt;br /&gt;
Follow the instructions in [[Quality/QA-tools/QADashboard/Setting_up_the_development_environment]] to:&lt;br /&gt;
# Install Node.js&lt;br /&gt;
# Install Node Package Manager&lt;br /&gt;
# Install mongodb&lt;br /&gt;
&lt;br /&gt;
== Create virtual host for QA Dashboard ==&lt;br /&gt;
(example using nginx)&lt;br /&gt;
&lt;br /&gt;
Write a following virtual host declaration to /etc/nginx/sites-available/qa-dashboard&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 server {&lt;br /&gt;
     listen 80;&lt;br /&gt;
     server_name qa-dashboard.qa.leonidasoy.fi;&lt;br /&gt;
     location / {&lt;br /&gt;
         proxy_pass  http://localhost:3030;&lt;br /&gt;
         proxy_set_header Host $host;&lt;br /&gt;
         proxy_set_header X-Forwarded-Host $host;&lt;br /&gt;
         proxy_set_header X-Forwarded-Server $host;&lt;br /&gt;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; &lt;br /&gt;
         proxy_set_header X-Real-IP  $remote_addr;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart nginx&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 sudo service nginx restart&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Deploying QA Dashboard =&lt;br /&gt;
&lt;br /&gt;
== Enable public key authentication for your deployment account ==&lt;br /&gt;
&lt;br /&gt;
Set up public key authentication:&lt;br /&gt;
# Generate yourself as SSH key pair if you don't have one: &amp;lt;tt&amp;gt;$ ssh-keygen&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Add your public key to &amp;lt;tt&amp;gt;authorized_keys&amp;lt;/tt&amp;gt; file of your production environment user: &amp;lt;br&amp;gt; &amp;lt;tt&amp;gt;$ ssh your.production.user@your.production.host 'mkdir .ssh; echo '`cat ~/.ssh/id_rsa.pub`' &amp;gt;&amp;gt; ~/.ssh/authorized_keys'&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Try logging in: &amp;lt;tt&amp;gt;ssh your.production.user@your.production.host&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modify settings ==&lt;br /&gt;
&lt;br /&gt;
QA Dashboard authentication settings are defined in &amp;lt;tt&amp;gt;settings.json&amp;lt;/tt&amp;gt; that is deployed with Capistrano. &lt;br /&gt;
&lt;br /&gt;
=== LDAP Authentication ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
=== MySQL Authentication ===&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Modify Capistrano scripts and setup deployment ==&lt;br /&gt;
&lt;br /&gt;
QA Dashboard uses following scripts to configure Capistrano&lt;br /&gt;
* &amp;lt;tt&amp;gt;config/deploy.rb&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;config/deploy/staging.rb&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;config/deploy/production.rb&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want to review all the files, but usually it's enough to update only &amp;lt;tt&amp;gt;config/deploy/production.rb&amp;lt;/tt&amp;gt; according to your needs (servers, deployment account, ssh options). You can also create new deployment environment just by copying the production.rb, to e.g. internal.rb and modify it.&lt;br /&gt;
&lt;br /&gt;
When you deploy for first time you need to run setup command, which creates creates the folder hierarchy and the symbolic links required by Capistrano.&amp;lt;br&amp;gt;&lt;br /&gt;
Once the Capistrano is updated according to your needs you need to run setup command, which creates creates the folder hierarchy and the symbolic links required by Capistrano. After that the server can be started.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cap production deploy:setup # or cap internal deploy:setup, if you created a new deployment environment&lt;br /&gt;
 $ cap production deploy:start # starts the server&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Deploying QA Dashboard ==&lt;br /&gt;
&lt;br /&gt;
Once the setup is complete, the deployment is as easy as it gets&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cap production deploy&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up the data flow ==&lt;br /&gt;
&lt;br /&gt;
QA Dashboard naturally needs data to be shown. This data usually comes from [[Quality/QA-tools/QAReports|QA Reports]] and Bugzilla. &lt;br /&gt;
&lt;br /&gt;
=== Getting data from QA Reports ===&lt;br /&gt;
Instructions for setting up the data synchronization is described in [[Quality/QA-tools/QAReports/Setting_up_the_production_environment#Configuring_data_flow_to_QA_Dashboard|QA Reports installation guide]].&lt;br /&gt;
&lt;br /&gt;
=== Getting data from Bugzilla ===&lt;br /&gt;
&lt;br /&gt;
TODO: Document Bugzilla exporter setup and usage&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_production_environment</id>
		<title>Quality/QA-tools/QAReports/Setting up the production environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_production_environment"/>
				<updated>2011-06-21T07:55:27Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Running and deploying QA Reports relies heavily on automated deployment scripts and version control repository. At high level, deployment process is following:&lt;br /&gt;
&lt;br /&gt;
# Log in to your workstation and update QA Reports working tree&lt;br /&gt;
# Run Capistrano deployment script on your workstation&lt;br /&gt;
# Capistrano script connects to the production server and updates the deployment by&lt;br /&gt;
## Connecting to version control system from production server and updating the source code on the production server&lt;br /&gt;
## Running the migrations and updating the database schema on production server&lt;br /&gt;
## Restarting the application on production server&lt;br /&gt;
&lt;br /&gt;
Capistrano enables you to automate also other administrative tasks like&lt;br /&gt;
# Rolling back to previous deployment&lt;br /&gt;
# Exporting data from production environment to your development environment&lt;br /&gt;
&lt;br /&gt;
To achieve all the goodness, you should [[Quality/QA-tools/QAReports/Setting up the development environment|set up the development environment]] on your workstation before continuing.&lt;br /&gt;
&lt;br /&gt;
= Setting up the production server =&lt;br /&gt;
&lt;br /&gt;
This guide has been written for vanilla Ubuntu 10.04 installation. You need to be logged in to the production server and have sudo rights to continue.&lt;br /&gt;
&lt;br /&gt;
== Install dependencies ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo aptitude install curl build-essential git-core openssh-server zlib1g-dev libssl-dev libreadline5-dev libcurl4-openssl-dev&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Ruby ==&lt;br /&gt;
&lt;br /&gt;
# Install [http://rvm.beginrescueend.com/ Ruby Version Manager] as root (to have system-wide install) &amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;$ bash &amp;lt; &amp;lt;(curl -B http://rvm.beginrescueend.com/install/rvm)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Set up .bashrc as instructed by RVM installer: The whole content into an if section, and after that loading of RVM. Here's an example [http://gist.github.com/822216 .bashrc]&lt;br /&gt;
# Run: $ source ~/.bashrc&lt;br /&gt;
# Add your account and the deployment account to &amp;lt;code&amp;gt;rvm&amp;lt;/code&amp;gt; group, e.g.&amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;$ sudo adduser jakeskik rvm&amp;lt;/code&amp;gt;&lt;br /&gt;
# Source your .bashrc to enable rvm&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;$ source ~/.bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install Ruby Enterprise Edition&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;$ rvm install ree&amp;lt;/code&amp;gt;&lt;br /&gt;
# Set the default Ruby interpreter&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;$ rvm use --default ree&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install bundler&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;$ gem install rails bundler --no-ri --no-rdoc&amp;lt;/code&amp;gt; #if you have proxy problem, plz refer to http://docs.rubygems.org/read/chapter/13#page51&lt;br /&gt;
&lt;br /&gt;
Finally, enable rvm and Ruby Enterprise Edition to your deployment account, e.g. www-data&lt;br /&gt;
&lt;br /&gt;
# Edit &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; and change &amp;lt;code&amp;gt;www-data&amp;lt;/code&amp;gt;'s shell from &amp;lt;code&amp;gt;sh&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;bash&amp;lt;/code&amp;gt;. You might want to change the home directory also from &amp;lt;code&amp;gt;/var/www&amp;lt;/code&amp;gt; to e.g. &amp;lt;code&amp;gt;/home/www-data&amp;lt;/code&amp;gt; as shown below&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;www-data:x:33:33:www-data:/home/www-data:/bin/bash&amp;lt;/code&amp;gt;&lt;br /&gt;
# Enable RVM as shown below&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ sudo adduser www-data rvm&lt;br /&gt;
  $ sudo -iu www-data&lt;br /&gt;
  $ cp ~jakeskik/.profile .&lt;br /&gt;
  $ cp ~jakeskik/.bashrc .&lt;br /&gt;
  $ exit&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Apache and Phusion Passenger ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ sudo apt-get install apache2 apache2-prefork-dev libapr1-dev libaprutil1-dev&lt;br /&gt;
  $ gem install passenger --no-ri --no-rdoc&lt;br /&gt;
  $ rvmsudo passenger-install-apache2-module # Follow the on-screen instructions and edit apache.conf&lt;br /&gt;
  $ sudo service apache2 restart&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install MySQL ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ sudo apt-get install mysql-server libmysqlclient-dev&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Postfix ==&lt;br /&gt;
&lt;br /&gt;
QA Reports sends email notifications for system administrators (you) in case the application throws an exception. To enable notifications, there needs to be a mail server configured on the production host.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ sudo apt-get install postfix&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default configuration is fine and allows only delivery for emails originated from localhost. Just click through the installer.&lt;br /&gt;
&lt;br /&gt;
== Test the environment ==&lt;br /&gt;
&lt;br /&gt;
After installing the software, run a sanity check for the environment by creating a 'hello world' rails project and corresponding virtual host:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ sudo -iu www-data&lt;br /&gt;
 $ rails new hello&lt;br /&gt;
 $ cd hello/public &amp;amp;&amp;amp; pwd&lt;br /&gt;
 /home/www-data/hello/public&lt;br /&gt;
 $ exit&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Write a following virtual host declaration to /etc/apache/sites-available/hello:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName hello.qa.leonidasoy.fi&lt;br /&gt;
      DocumentRoot /home/www-data/hello/public&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /home/www-data/hello/public&amp;gt;&lt;br /&gt;
         AllowOverride all&lt;br /&gt;
         Options -MultiViews&lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
   &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable the virtual host&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ sudo a2ensite hello&lt;br /&gt;
  $ sudo service apache2 restart&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add the virtual host to &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; file:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  127.0.0.1 hello.qa.leonidasoy.fi # Use the same domain as above&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you should be able to access the 'hello world' project with a browser, e.g. lynx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ lynx hello.qa.leonidasoy.fi&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create a database for QA Reports ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ mysql -u root -p&lt;br /&gt;
 mysql&amp;gt; create user 'qa-reports'@'localhost' identified by 'somepasswordofyourchoosing';&lt;br /&gt;
 mysql&amp;gt; create database qa_reports_production character set 'utf8';&lt;br /&gt;
 mysql&amp;gt; grant all privileges on qa_reports_production.* to 'qa-reports'@'localhost';&lt;br /&gt;
 mysql&amp;gt; flush privileges;&lt;br /&gt;
 mysql&amp;gt; exit&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create virtual host for QA Reports ==&lt;br /&gt;
&lt;br /&gt;
Write a following virtual host declaration to /etc/apache/sites-available/qa-reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName qa-reports.qa.leonidasoy.fi&lt;br /&gt;
      DocumentRoot /home/www-data/qa-reports.meego.com/current/public&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /home/www-data/qa-reports.meego.com/current/public&amp;gt;&lt;br /&gt;
         AllowOverride all&lt;br /&gt;
         Options -MultiViews&lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
   &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable the virtual host&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ sudo a2ensite qa-reports&lt;br /&gt;
  $ sudo service apache2 restart # Don't mind the warning about missing dir,&lt;br /&gt;
                                 # we'll deal with that one in a sec&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Deploying QA Reports =&lt;br /&gt;
&lt;br /&gt;
QA Reports uses Capistrano to automate the deployments. The main benefit is to eliminate the risks of human errors and to enable easy and repeatable rollbacks. See [http://github.com/capistrano/capistrano/wiki Capistrano documentation] for the details.&lt;br /&gt;
&lt;br /&gt;
Capistrano is run from your development environment, so you should be now on &amp;lt;b&amp;gt;your workstation&amp;lt;/b&amp;gt; with working QA Reports development environment to continue.&lt;br /&gt;
&lt;br /&gt;
== Enable public key authentication for your deployment account ==&lt;br /&gt;
&lt;br /&gt;
Set up public key authentication:&lt;br /&gt;
# Generate yourself as SSH key pair if you don't have one: &amp;lt;tt&amp;gt;$ ssh-keygen&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Add your public key to &amp;lt;tt&amp;gt;authorized_keys&amp;lt;/tt&amp;gt; file of your production environment user: &amp;lt;br&amp;gt; &amp;lt;tt&amp;gt;$ ssh your.production.user@your.production.host 'mkdir .ssh; echo '`cat ~/.ssh/id_rsa.pub`' &amp;gt;&amp;gt; ~/.ssh/authorized_keys'&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Try logging in: &amp;lt;tt&amp;gt;ssh your.production.user@your.production.host&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modify Capistrano scripts and deploy QA Reports ==&lt;br /&gt;
&lt;br /&gt;
QA Reports uses following scripts to configure Capistrano&lt;br /&gt;
* &amp;lt;tt&amp;gt;config/deploy.rb&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;config/deploy/staging.rb&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;config/deploy/production.rb&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want to review all the files, but usually it's enough to update only &amp;lt;tt&amp;gt;config/deploy/production.rb&amp;lt;/tt&amp;gt; according to your needs (servers, deployment account, ssh options). You can also create new deployment environment just by copying the production.rb, to e.g. internal.rb and modify it.&lt;br /&gt;
&lt;br /&gt;
Once the Capistrano is updated according to your needs, run &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ cap production deploy:setup # or cap internal deploy:setup, if you created a new deployment environment&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setup command creates the folder hierarchy and the symbolic links required by Capistrano. During the setup it requests following information&lt;br /&gt;
# Database host&lt;br /&gt;
# Database port&lt;br /&gt;
# Database name&lt;br /&gt;
# Database username&lt;br /&gt;
# Database password&lt;br /&gt;
# Should QA Reports send performance data to [http://newrelic.com NewRelic]? (Default: no)&lt;br /&gt;
# Registration token. This will be part of the registration url, e.g. &amp;lt;tt&amp;gt;foobar&amp;lt;/tt&amp;gt; will make registration to be at url &amp;lt;tt&amp;gt;/users/foobar/register&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Email addresses for Exception Notifier&lt;br /&gt;
&lt;br /&gt;
Once the setup is complete, the deployment is as easy as it gets&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cap production deploy:migrations&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should now have QA Reports up&amp;amp;running. Congrats!&lt;br /&gt;
&lt;br /&gt;
== Update QA Reports to a new version ==&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;git pull&amp;lt;/code&amp;gt; (In case there's changes in the deployment scripts)&lt;br /&gt;
# &amp;lt;code&amp;gt;cap production deploy:migrations&amp;lt;/code&amp;gt;&lt;br /&gt;
# Ta-da!&lt;br /&gt;
&lt;br /&gt;
== Roll back to previous version ==&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;cap production deploy:rollback&amp;lt;/code&amp;gt;&lt;br /&gt;
# Ta-da!&lt;br /&gt;
&lt;br /&gt;
= Configuring data flow to QA Dashboard =&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
= Setting Up the Production Environment with nginx instead of Apache =&lt;br /&gt;
&lt;br /&gt;
# Follow instructions above until &amp;quot;Install Apache and Passenger&amp;quot;, then continue here from step 2.&lt;br /&gt;
# Install passenger: &amp;lt;tt&amp;gt;$ gem install passenger&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install nginx: &amp;lt;tt&amp;gt;$ passenger-install-nginx-module&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Notice: the default location is under &amp;lt;tt&amp;gt;/opt&amp;lt;/tt&amp;gt;. If you wish to install there, use &amp;lt;tt&amp;gt;rvmsudo&amp;lt;/tt&amp;gt;. Notice however, that part of your &amp;lt;tt&amp;gt;~/.rvm&amp;lt;/tt&amp;gt; contents will then belong to root and may cause gray hair later. I chose to install under &amp;lt;tt&amp;gt;~/nginx&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Edit nginx configuration &amp;lt;tt&amp;gt;installation_path/conf/nginx.conf&amp;lt;/tt&amp;gt;:&lt;br /&gt;
## Comment out section &amp;lt;tt&amp;gt;location / { ... }&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Add lines:&lt;br /&gt;
### &amp;lt;tt&amp;gt;passenger_enabled on;&amp;lt;/tt&amp;gt;&lt;br /&gt;
### &amp;lt;tt&amp;gt;root /home/your_prod_env_user/qa-reports.meego.com/current/public;&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Start nginx: &amp;lt;tt&amp;gt;$ sudo /installation_path/sbin/nginx&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Continue with the guide above from &amp;quot;Deploying QA Reports&amp;quot;&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Talk:Quality/QA-tools/QAReports/Admin_FAQ</id>
		<title>Talk:Quality/QA-tools/QAReports/Admin FAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Talk:Quality/QA-tools/QAReports/Admin_FAQ"/>
				<updated>2011-06-21T07:49:39Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Multiple servers / load balancing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Multiple servers / load balancing ==&lt;br /&gt;
Sharing the whole &amp;lt;tt&amp;gt;shared&amp;lt;/tt&amp;gt; folder breaks deployment as git checkout is updated from more than one servers at the same time, and this will cause file locking problems. Thus the actually needed folders need to be identified. [[User:Vesse|Vesse]] 07:49, 21 June 2011 (UTC)&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Talk:Quality/QA-tools/QAReports/Admin_FAQ</id>
		<title>Talk:Quality/QA-tools/QAReports/Admin FAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Talk:Quality/QA-tools/QAReports/Admin_FAQ"/>
				<updated>2011-06-21T07:49:13Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: Created page with &amp;quot;== Multiple servers / load balancing == Sharing the whole &amp;lt;tt&amp;gt;shared&amp;lt;/tt&amp;gt; folder breaks deployment as git checkout is updated from more than one servers at the same time, and thi...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Multiple servers / load balancing ==&lt;br /&gt;
Sharing the whole &amp;lt;tt&amp;gt;shared&amp;lt;/tt&amp;gt; folder breaks deployment as git checkout is updated from more than one servers at the same time, and this will cause locking problems. Thus the actually needed folders need to be identified. [[User:Vesse|Vesse]] 07:49, 21 June 2011 (UTC)&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QADashboard/Setting_up_the_production_environment</id>
		<title>Quality/QA-tools/QADashboard/Setting up the production environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QADashboard/Setting_up_the_production_environment"/>
				<updated>2011-06-21T07:37:09Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Install dependencies */ Changed the link from QA Reports to QA Dashboard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Running and deploying QA Dashboard relies heavily on automated deployment scripts and version control repository. At high level, deployment process is following:&lt;br /&gt;
&lt;br /&gt;
# Log in to your workstation and update QA Dashboard working tree&lt;br /&gt;
# Run Capistrano deployment script on your workstation&lt;br /&gt;
# Capistrano script connects to the production server and updates the deployment by&lt;br /&gt;
## Connecting to version control system from production server and updating the source code on the production server&lt;br /&gt;
## Installing node package dependencies&lt;br /&gt;
## Restarting the application on production server&lt;br /&gt;
&lt;br /&gt;
= Setting up the local environment for deployments =&lt;br /&gt;
&lt;br /&gt;
QA Dashboard uses Capistrano to automate the deployments. The main benefit is to eliminate the risks of human errors and to enable easy and repeatable rollbacks. See [http://github.com/capistrano/capistrano/wiki Capistrano documentation] for the details&lt;br /&gt;
&lt;br /&gt;
== Install development environment ==&lt;br /&gt;
&lt;br /&gt;
You should first [http://wiki.meego.com/Quality/QA-tools/QADashboard/Setting_up_the_development_environment set up the development environment] on your workstation before continuing.&lt;br /&gt;
Capistrano is run from your development environment&lt;br /&gt;
&lt;br /&gt;
== Installing Capistrano ==&lt;br /&gt;
&lt;br /&gt;
Capistrano requires Ruby. If you do not have Ruby installed please follow the &amp;quot;Install Ruby&amp;quot; instructions [http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;$ gem install capistrano&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Setting up the production server =&lt;br /&gt;
&lt;br /&gt;
== Install dependencies ==&lt;br /&gt;
&lt;br /&gt;
The same dependencies are needed in the production server as in development environment.&lt;br /&gt;
Follow the instructions in [[Quality/QA-tools/QADashboard/Setting_up_the_development_environment]] to:&lt;br /&gt;
# Install Node.js&lt;br /&gt;
# Install Node Package Manager&lt;br /&gt;
# Install mongodb&lt;br /&gt;
&lt;br /&gt;
== Create virtual host for QA Dashboard ==&lt;br /&gt;
(example using nginx)&lt;br /&gt;
&lt;br /&gt;
Write a following virtual host declaration to /etc/nginx/sites-available/qa-dashboard&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 server {&lt;br /&gt;
     listen 80;&lt;br /&gt;
     server_name qa-dashboard.qa.leonidasoy.fi;&lt;br /&gt;
     location / {&lt;br /&gt;
         proxy_pass  http://localhost:3030;&lt;br /&gt;
         proxy_set_header Host $host;&lt;br /&gt;
         proxy_set_header X-Forwarded-Host $host;&lt;br /&gt;
         proxy_set_header X-Forwarded-Server $host;&lt;br /&gt;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; &lt;br /&gt;
         proxy_set_header X-Real-IP  $remote_addr;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart nginx&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 sudo service nginx restart&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Deploying QA Dashboard =&lt;br /&gt;
&lt;br /&gt;
== Enable public key authentication for your deployment account ==&lt;br /&gt;
&lt;br /&gt;
Set up public key authentication:&lt;br /&gt;
# Generate yourself as SSH key pair if you don't have one: &amp;lt;tt&amp;gt;$ ssh-keygen&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Add your public key to &amp;lt;tt&amp;gt;authorized_keys&amp;lt;/tt&amp;gt; file of your production environment user: &amp;lt;br&amp;gt; &amp;lt;tt&amp;gt;$ ssh your.production.user@your.production.host 'mkdir .ssh; echo '`cat ~/.ssh/id_rsa.pub`' &amp;gt;&amp;gt; ~/.ssh/authorized_keys'&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Try logging in: &amp;lt;tt&amp;gt;ssh your.production.user@your.production.host&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modify Capistrano scripts and setup deployment ==&lt;br /&gt;
&lt;br /&gt;
QA Dashboard uses following scripts to configure Capistrano&lt;br /&gt;
* &amp;lt;tt&amp;gt;config/deploy.rb&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;config/deploy/staging.rb&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;config/deploy/production.rb&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want to review all the files, but usually it's enough to update only &amp;lt;tt&amp;gt;config/deploy/production.rb&amp;lt;/tt&amp;gt; according to your needs (servers, deployment account, ssh options). You can also create new deployment environment just by copying the production.rb, to e.g. internal.rb and modify it.&lt;br /&gt;
&lt;br /&gt;
When you deploy for first time you need to run setup command, which creates creates the folder hierarchy and the symbolic links required by Capistrano.&amp;lt;br&amp;gt;&lt;br /&gt;
Once the Capistrano is updated according to your needs you need to run setup command, which creates creates the folder hierarchy and the symbolic links required by Capistrano. After that the server can be started.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cap production deploy:setup # or cap internal deploy:setup, if you created a new deployment environment&lt;br /&gt;
 $ cap production deploy:start # starts the server&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Deploying QA Dashboard ==&lt;br /&gt;
&lt;br /&gt;
Once the setup is complete, the deployment is as easy as it gets&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cap production deploy&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QADashboard/Setting_up_the_development_environment</id>
		<title>Quality/QA-tools/QADashboard/Setting up the development environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QADashboard/Setting_up_the_development_environment"/>
				<updated>2011-04-19T11:01:42Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Install Node Package Manager */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
QA Dashboard is a [http://nodejs.org/ Node.js] application. It is written in [http://jashkenas.github.com/coffee-script/ coffee-script] and uses [http://www.mongodb.org/ mongodb] database. You need to install some awesome open source tools to get the development environment up and running.&lt;br /&gt;
&lt;br /&gt;
==Install Node.js==&lt;br /&gt;
(uses v0.4.5 stable package)&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ wget http://nodejs.org/dist/node-v0.4.5.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ gunzip node-v0.4.5.tar.gz &amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ tar -xf node-v0.4.5.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ cd node-v0.4.5&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ ./configure&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ make&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ sudo make install&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Install Node Package Manager==&lt;br /&gt;
(uses v1.0.1rc7 stable branch)&lt;br /&gt;
#&amp;lt;tt&amp;gt;$ git clone https://github.com/isaacs/npm.git&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt;$ cd npm&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt;$ git checkout v1.0.1rc7&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt;$ sudo make install&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your environment does not allow git protocol, make install will fail because of fetching the submodules. This can be fixed by changing the submodule URLs:&lt;br /&gt;
#&amp;lt;tt&amp;gt;$ git config submodule.node_modules/abbrev.url https://github.com/isaacs/abbrev-js.git&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt;$ git config submodule.node_modules/nopt.url https://github.com/isaacs/nopt.git&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt;$ git config submodule.node_modules/semver.url https://github.com/isaacs/node-semver.git&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Install mongodb==&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ sudo apt-get install mongodb&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set up QA Dashboard==&lt;br /&gt;
QA Dashboard repository includes a default mongodb dump which can be used to populate the database.&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ cd qa-dashboard&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ mongorestore&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Run the tests and start the server==&lt;br /&gt;
#Run unit tests:&amp;lt;tt&amp;gt; $ ./run-nodeunit.sh&amp;lt;/tt&amp;gt;&lt;br /&gt;
#Start the server:&amp;lt;tt&amp;gt; $ ./run-server.sh&amp;lt;/tt&amp;gt;&lt;br /&gt;
#Browse to http://localhost:3030&lt;br /&gt;
&lt;br /&gt;
The server will start in development mode using node-supervisor, which watches for code changes and restarts the server accordingly.&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QADashboard/Setting_up_the_development_environment</id>
		<title>Quality/QA-tools/QADashboard/Setting up the development environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QADashboard/Setting_up_the_development_environment"/>
				<updated>2011-04-19T10:23:28Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Install Node Package Manager */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
QA Dashboard is a [http://nodejs.org/ Node.js] application. It is written in [http://jashkenas.github.com/coffee-script/ coffee-script] and uses [http://www.mongodb.org/ mongodb] database. You need to install some awesome open source tools to get the development environment up and running.&lt;br /&gt;
&lt;br /&gt;
==Install Node.js==&lt;br /&gt;
(uses v0.4.5 stable package)&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ wget http://nodejs.org/dist/node-v0.4.5.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ gunzip node-v0.4.5.tar.gz &amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ tar -xf node-v0.4.5.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ cd node-v0.4.5&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ ./configure&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ make&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ sudo make install&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Install Node Package Manager==&lt;br /&gt;
(uses v1.0.1rc7 stable branch)&lt;br /&gt;
#&amp;lt;tt&amp;gt;$ git clone https://github.com/isaacs/npm.git&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt;$ cd npm&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt;$ git checkout v1.0.1rc7&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt;$ sudo make install&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Install mongodb==&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ sudo apt-get install mongodb&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set up QA Dashboard==&lt;br /&gt;
QA Dashboard repository includes a default mongodb dump which can be used to populate the database.&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ cd qa-dashboard&amp;lt;/tt&amp;gt;&lt;br /&gt;
#&amp;lt;tt&amp;gt; $ mongorestore&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Run the tests and start the server==&lt;br /&gt;
#Run unit tests:&amp;lt;tt&amp;gt; $ ./run-nodeunit.sh&amp;lt;/tt&amp;gt;&lt;br /&gt;
#Start the server:&amp;lt;tt&amp;gt; $ ./run-server.sh&amp;lt;/tt&amp;gt;&lt;br /&gt;
#Browse to http://localhost:3030&lt;br /&gt;
&lt;br /&gt;
The server will start in development mode using node-supervisor, which watches for code changes and restarts the server accordingly.&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QAReports/API</id>
		<title>Quality/QA-tools/QAReports/API</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QAReports/API"/>
				<updated>2011-04-11T07:46:58Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* /api/import */ New import api parameters&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MeeGo QA Reports API =&lt;br /&gt;
&lt;br /&gt;
MeeGo QA Reports have two [http://en.wikipedia.org/wiki/Representational_State_Transfer RESTful] HTTP API for programmatically importing test reports, and updating the test cases of a existed report. &lt;br /&gt;
&lt;br /&gt;
Personal Authentication Token is required for operating with the API. The token can be fetched via QA Reports web UI, by clicking the user name link at the upper right center of the page while logged in.&lt;br /&gt;
&lt;br /&gt;
[[File:Index.png|500px]]&lt;br /&gt;
&lt;br /&gt;
The API key is shown at the bottom of the User Preferences page:&lt;br /&gt;
&lt;br /&gt;
[[File:User_preferences.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== /api/import ==&lt;br /&gt;
Description: Import test results&amp;lt;br/&amp;gt;&lt;br /&gt;
Method: POST [encoding multipart/form-data]&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Description&lt;br /&gt;
! Values&lt;br /&gt;
|-&lt;br /&gt;
| auth_token&lt;br /&gt;
| Personal authentication token&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| release_version&lt;br /&gt;
| Release version&lt;br /&gt;
| 1.0, 1.1, 1.2&lt;br /&gt;
|-&lt;br /&gt;
| target&lt;br /&gt;
| Target profile&lt;br /&gt;
| Core, Handset, Netbook, IVI&lt;br /&gt;
|-&lt;br /&gt;
| testtype&lt;br /&gt;
| Test type&lt;br /&gt;
| Sanity, Acceptance, Basic Feature Testing etc&lt;br /&gt;
|-&lt;br /&gt;
| tested_at&lt;br /&gt;
| Timestamp of the test in format yyyy-mm-dd &lt;br /&gt;
| Optional. If not given, current date is used. &amp;lt;br/&amp;gt;Example value: 2010-12-14&lt;br /&gt;
|-&lt;br /&gt;
| hwproduct&lt;br /&gt;
| Hardware&lt;br /&gt;
| Ia-Russellville, N900, Pinetrail etc&lt;br /&gt;
|-&lt;br /&gt;
| report, report.[1..n]&lt;br /&gt;
| Report file in XML format&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| attachment, attachment.[1..n]&lt;br /&gt;
| Files to be attached with the report: Screenshots, logs etc&lt;br /&gt;
| Optional&lt;br /&gt;
|-&lt;br /&gt;
| title&lt;br /&gt;
| Report title&lt;br /&gt;
| Optional. Default: value generated from other information if user defined title is not given.&lt;br /&gt;
|-&lt;br /&gt;
| objective_txt&lt;br /&gt;
| Test objective. Web UI markup can be used.&lt;br /&gt;
| Optional. Default: value is set from previous report if it exists.&lt;br /&gt;
|-&lt;br /&gt;
| build_txt&lt;br /&gt;
| Build (image) section content. Web UI markup can be used.&lt;br /&gt;
| Optional. Default: value is set from previous report if it exists.&lt;br /&gt;
|-&lt;br /&gt;
| environment_txt&lt;br /&gt;
| Test environment. Web UI markup can be used.&lt;br /&gt;
| Optional. Default: hwproduct name&lt;br /&gt;
|-&lt;br /&gt;
| qa_summary_txt&lt;br /&gt;
| Quality summary. Web UI markup can be used.&lt;br /&gt;
| Optional. Default: value is set from previous report if it exists.&lt;br /&gt;
|-&lt;br /&gt;
| issue_summary_txt&lt;br /&gt;
| Issue summary. Web UI markup can be used.&lt;br /&gt;
| Optional. Default: value is set from previous report if it exists.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The input can contain multiple ''report'' and ''attachment'' files. If multiple files are given, an unique field name have to be given for each file. Unique file names are created by giving a sequence number for each file starting from number 1, for example &amp;quot;attachment.1&amp;quot;, &amp;quot;attachment.2&amp;quot; etc. If only on file is given, field can be used without sequence number, for example &amp;quot;attachment&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Because multiple files can be uploaded, HTTP POST with &amp;quot;[http://tools.ietf.org/html/rfc2388 multipart/form-encoding]&amp;quot; is used.&lt;br /&gt;
&lt;br /&gt;
An example using [http://curl.haxx.se/Curl Curl] for testing the API:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;curl --form report.1=@sim.xml  --form report.2=@bluetooth.xml --form attachment.1=coredump http://&amp;lt;server&amp;gt;/api/import?auth_token=&amp;lt;token&amp;gt;\&amp;amp;release_version=1.2\&amp;amp;target=Core\&amp;amp;testtype=Acceptance\&amp;amp;hwproduct=N900&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The operation results status code in [http://en.wikipedia.org/wiki/JSON JSON] format. If the operation proceeds successfully, key value pair &amp;quot;ok&amp;quot; = 1 is returned.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{&amp;quot;ok&amp;quot;:&amp;quot;1&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case of error, ''ok'' values is 0, and an additional field ''errors'' describing the problem is returned&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{&amp;quot;ok&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;errors&amp;quot;:&amp;quot;unknown attribute: foobar&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /api/update/&amp;lt;Report_ID&amp;gt; ==&lt;br /&gt;
Description: Update the test cases of a existed report&amp;lt;br/&amp;gt;&lt;br /&gt;
Method: POST [encoding multipart/form-data]&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter name&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| auth_token&lt;br /&gt;
| Personal authentication token&lt;br /&gt;
|-&lt;br /&gt;
| report, report.[1..n]&lt;br /&gt;
| Report file in XML or CSV format&lt;br /&gt;
|-&lt;br /&gt;
| Report_ID&lt;br /&gt;
| The ID of the target report&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The ID of the target report can be fetched from the URL of the corresponding report page, as shown in the picture below:&lt;br /&gt;
&lt;br /&gt;
[[File:report_id.png|600px]]&lt;br /&gt;
&lt;br /&gt;
The input can contain multiple ''report'' files. If multiple ''report'' files are given, an unique report name have to be given for each file. Unique file names are created by giving a sequence number for each file starting from number 1, for example &amp;quot;report.1&amp;quot;, &amp;quot;report.2&amp;quot; etc. If only one file is given, field can be used without sequence number, for example &amp;quot;report&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Because multiple files can be uploaded, HTTP POST with &amp;quot;[http://tools.ietf.org/html/rfc2388 multipart/form-encoding]&amp;quot; is used.&lt;br /&gt;
&lt;br /&gt;
An example using [http://curl.haxx.se/Curl Curl] for testing the API:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;curl --form report.1=@sim.xml  --form report.2=@bluetooth.xml http://&amp;lt;Server_Domain_Name&amp;gt;/api/update/&amp;lt;Report_ID&amp;gt;?auth_token=&amp;lt;token&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The operation results status code in [http://en.wikipedia.org/wiki/JSON JSON] format. If the operation proceeds successfully, key value pair &amp;quot;ok&amp;quot; = 1 is returned.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{&amp;quot;ok&amp;quot;:&amp;quot;1&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case of error, ''ok'' values is 0, and an additional field ''errors'' describing the problem is returned&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;{&amp;quot;ok&amp;quot;:&amp;quot;0&amp;quot;,&amp;quot;errors&amp;quot;:&amp;quot;Request contained invalid files: ...&amp;quot;}&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_production_environment</id>
		<title>Quality/QA-tools/QAReports/Setting up the production environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_production_environment"/>
				<updated>2011-03-01T13:47:42Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Create a database for QA Reports */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Running and deploying QA Reports relies heavily on automated deployment scripts and version control repository. At high level, deployment process is following:&lt;br /&gt;
&lt;br /&gt;
# Log in to your workstation and update QA Reports working tree&lt;br /&gt;
# Run Capistrano deployment script on your workstation&lt;br /&gt;
# Capistrano script connects to the production server and updates the deployment by&lt;br /&gt;
## Connecting to version control system from production server and updating the source code on the production server&lt;br /&gt;
## Running the migrations and updating the database schema on production server&lt;br /&gt;
## Restarting the application on production server&lt;br /&gt;
&lt;br /&gt;
Capistrano enables you to automate also other administrative tasks like&lt;br /&gt;
# Rolling back to previous deployment&lt;br /&gt;
# Exporting data from production environment to your development environment&lt;br /&gt;
&lt;br /&gt;
To achieve all the goodness, you should [[Quality/QA-tools/QAReports/Setting up the development environment|set up the development environment]] on your workstation before continuing.&lt;br /&gt;
&lt;br /&gt;
= Setting up the production server =&lt;br /&gt;
&lt;br /&gt;
This guide has been written for vanilla Ubuntu 10.04 installation. You need to be logged in to the production server and have sudo rights to continue.&lt;br /&gt;
&lt;br /&gt;
== Install dependencies ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ sudo aptitude install curl build-essential git-core openssh-server zlib1g-dev libssl-dev libreadline5-dev libcurl4-openssl-dev&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Ruby ==&lt;br /&gt;
&lt;br /&gt;
# Install [http://rvm.beginrescueend.com/ Ruby Version Manager] (using system-wide installation script)&amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;$ sudo bash &amp;lt; &amp;lt;( curl -L http://bit.ly/rvm-install-system-wide )&amp;lt;/code&amp;gt;&lt;br /&gt;
# Set up .bashrc as instructed by RVM installer: The whole content into an if section, and after that loading of RVM. Here's an example [http://gist.github.com/822216 .bashrc]&lt;br /&gt;
# Run: $ source ~/.bashrc&lt;br /&gt;
# Add your account and the deployment account to &amp;lt;code&amp;gt;rvm&amp;lt;/code&amp;gt; group, e.g.&amp;lt;br /&amp;gt; &amp;lt;code&amp;gt;$ sudo adduser jakeskik rvm&amp;lt;/code&amp;gt;&lt;br /&gt;
# Source your .bashrc to enable rvm&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;$ source ~/.bashrc&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install Ruby Enterprise Edition&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;$ rvm install ree&amp;lt;/code&amp;gt;&lt;br /&gt;
# Set the default Ruby interpreter&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;$ rvm use --default ree&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install bundler&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;$ gem install rails bundler --no-ri --no-rdoc&amp;lt;/code&amp;gt; #if you have proxy problem, plz refer to http://docs.rubygems.org/read/chapter/13#page51&lt;br /&gt;
&lt;br /&gt;
Finally, enable rvm and Ruby Enterprise Edition to your deployment account, e.g. www-data&lt;br /&gt;
&lt;br /&gt;
# Edit &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; and change &amp;lt;code&amp;gt;www-data&amp;lt;/code&amp;gt;'s shell from &amp;lt;code&amp;gt;sh&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;bash&amp;lt;/code&amp;gt;. You might want to change the home directory also from &amp;lt;code&amp;gt;/var/www&amp;lt;/code&amp;gt; to e.g. &amp;lt;code&amp;gt;/home/www-data&amp;lt;/code&amp;gt; as shown below&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;www-data:x:33:33:www-data:/home/www-data:/bin/bash&amp;lt;/code&amp;gt;&lt;br /&gt;
# Enable RVM as shown below&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ sudo adduser www-data rvm&lt;br /&gt;
  $ sudo -iu www-data&lt;br /&gt;
  $ cp ~jakeskik/.profile .&lt;br /&gt;
  $ cp ~jakeskik/.bashrc .&lt;br /&gt;
  $ exit&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Apache and Phusion Passenger ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ sudo apt-get install apache2 apache2-prefork-dev libapr1-dev libaprutil1-dev&lt;br /&gt;
  $ gem install passenger --no-ri --no-rdoc&lt;br /&gt;
  $ rvmsudo passenger-install-apache2-module # Follow the on-screen instructions and edit apache.conf&lt;br /&gt;
  $ sudo service apache2 restart&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install MySQL ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ sudo apt-get install mysql-server libmysqlclient-dev&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install Postfix ==&lt;br /&gt;
&lt;br /&gt;
QA Reports sends email notifications for system administrators (you) in case the application throws an exception. To enable notifications, there needs to be a mail server configured on the production host.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ sudo apt-get install postfix&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default configuration is fine and allows only delivery for emails originated from localhost. Just click through the installer.&lt;br /&gt;
&lt;br /&gt;
== Test the environment ==&lt;br /&gt;
&lt;br /&gt;
After installing the software, run a sanity check for the environment by creating a 'hello world' rails project and corresponding virtual host:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ sudo -iu www-data&lt;br /&gt;
 $ rails new hello&lt;br /&gt;
 $ cd hello/public &amp;amp;&amp;amp; pwd&lt;br /&gt;
 /home/www-data/hello/public&lt;br /&gt;
 $ exit&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Write a following virtual host declaration to /etc/apache/sites-available/hello:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName hello.qa.leonidasoy.fi&lt;br /&gt;
      DocumentRoot /home/www-data/hello/public&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /home/www-data/hello/public&amp;gt;&lt;br /&gt;
         AllowOverride all&lt;br /&gt;
         Options -MultiViews&lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
   &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable the virtual host&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ sudo a2ensite hello&lt;br /&gt;
  $ sudo service apache2 restart&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add the virtual host to &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; file:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  127.0.0.1 hello.qa.leonidasoy.fi # Use the same domain as above&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you should be able to access the 'hello world' project with a browser, e.g. lynx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ lynx hello.qa.leonidasoy.fi&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create a database for QA Reports ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ mysql -u root -p&lt;br /&gt;
 mysql&amp;gt; create user 'qa-reports'@'localhost' identified by 'somepasswordofyourchoosing';&lt;br /&gt;
 mysql&amp;gt; create database qa_reports_production character set 'utf8';&lt;br /&gt;
 mysql&amp;gt; grant all privileges on qa_reports_production.* to 'qa-reports'@'localhost';&lt;br /&gt;
 mysql&amp;gt; flush privileges;&lt;br /&gt;
 mysql&amp;gt; exit&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create virtual host for QA Reports ==&lt;br /&gt;
&lt;br /&gt;
Write a following virtual host declaration to /etc/apache/sites-available/qa-reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName qa-reports.qa.leonidasoy.fi&lt;br /&gt;
      DocumentRoot /home/www-data/qa-reports.meego.com/current/public&lt;br /&gt;
  &lt;br /&gt;
      &amp;lt;Directory /home/www-data/qa-reports.meego.com/current/public&amp;gt;&lt;br /&gt;
         AllowOverride all&lt;br /&gt;
         Options -MultiViews&lt;br /&gt;
      &amp;lt;/Directory&amp;gt;&lt;br /&gt;
   &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable the virtual host&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ sudo a2ensite qa-reports&lt;br /&gt;
  $ sudo service apache2 restart # Don't mind the warning about missing dir,&lt;br /&gt;
                                 # we'll deal with that one in a sec&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Deploying QA Reports =&lt;br /&gt;
&lt;br /&gt;
QA Reports uses Capistrano to automate the deployments. The main benefit is to eliminate the risks of human errors and to enable easy and repeatable rollbacks. See [http://github.com/capistrano/capistrano/wiki Capistrano documentation] for the details.&lt;br /&gt;
&lt;br /&gt;
Capistrano is run from your development environment, so you should be now on &amp;lt;b&amp;gt;your workstation&amp;lt;/b&amp;gt; with working QA Reports development environment to continue.&lt;br /&gt;
&lt;br /&gt;
== Enable public key authentication for your deployment account ==&lt;br /&gt;
&lt;br /&gt;
Set up public key authentication:&lt;br /&gt;
# Generate yourself as SSH key pair if you don't have one: &amp;lt;tt&amp;gt;$ ssh-keygen&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Add your public key to &amp;lt;tt&amp;gt;authorized_keys&amp;lt;/tt&amp;gt; file of your production environment user: &amp;lt;br&amp;gt; &amp;lt;tt&amp;gt;$ ssh your.production.user@your.production.host 'mkdir .ssh; echo '`cat ~/.ssh/id_rsa.pub`' &amp;gt;&amp;gt; ~/.ssh/authorized_keys'&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Try logging in: &amp;lt;tt&amp;gt;ssh your.production.user@your.production.host&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modify Capistrano scripts and deploy QA Reports ==&lt;br /&gt;
&lt;br /&gt;
QA Reports uses following scripts to configure Capistrano&lt;br /&gt;
* &amp;lt;tt&amp;gt;config/deploy.rb&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;config/deploy/staging.rb&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;config/deploy/production.rb&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You might want to review all the files, but usually it's enough to update only &amp;lt;tt&amp;gt;config/deploy/production.rb&amp;lt;/tt&amp;gt; according to your needs (servers, deployment account, ssh options). You can also create new deployment environment just by copying the production.rb, to e.g. internal.rb and modify it.&lt;br /&gt;
&lt;br /&gt;
Once the Capistrano is updated according to your needs, run &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ cap production deploy:setup # or cap internal deploy:setup, if you created a new deployment environment&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setup command creates the folder hierarchy and the symbolic links required by Capistrano. During the setup it requests following information&lt;br /&gt;
# Database host&lt;br /&gt;
# Database port&lt;br /&gt;
# Database name&lt;br /&gt;
# Database username&lt;br /&gt;
# Database password&lt;br /&gt;
# Should QA Reports send performance data to [http://newrelic.com NewRelic]? (Default: no)&lt;br /&gt;
# Registration token. This will be part of the registration url, e.g. &amp;lt;tt&amp;gt;foobar&amp;lt;/tt&amp;gt; will make registration to be at url &amp;lt;tt&amp;gt;/users/foobar/register&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Email addresses for Exception Notifier&lt;br /&gt;
&lt;br /&gt;
Once the setup is complete, the deployment is as easy as it gets&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cap production deploy:migrations&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should now have QA Reports up&amp;amp;running. Congrats!&lt;br /&gt;
&lt;br /&gt;
== Update QA Reports to a new version ==&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;git pull&amp;lt;/code&amp;gt; (In case there's changes in the deployment scripts)&lt;br /&gt;
# &amp;lt;code&amp;gt;cap production deploy:migrations&amp;lt;/code&amp;gt;&lt;br /&gt;
# Ta-da!&lt;br /&gt;
&lt;br /&gt;
== Roll back to previous version ==&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;cap production deploy:rollback&amp;lt;/code&amp;gt;&lt;br /&gt;
# Ta-da!&lt;br /&gt;
&lt;br /&gt;
= Setting Up the Production Environment with nginx instead of Apache =&lt;br /&gt;
&lt;br /&gt;
# Follow instructions above until &amp;quot;Install Apache and Passenger&amp;quot;, then continue here from step 2.&lt;br /&gt;
# Install passenger: &amp;lt;tt&amp;gt;$ gem install passenger&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install nginx: &amp;lt;tt&amp;gt;$ passenger-install-nginx-module&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Notice: the default location is under &amp;lt;tt&amp;gt;/opt&amp;lt;/tt&amp;gt;. If you wish to install there, use &amp;lt;tt&amp;gt;rvmsudo&amp;lt;/tt&amp;gt;. Notice however, that part of your &amp;lt;tt&amp;gt;~/.rvm&amp;lt;/tt&amp;gt; contents will then belong to root and may cause gray hair later. I chose to install under &amp;lt;tt&amp;gt;~/nginx&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Edit nginx configuration &amp;lt;tt&amp;gt;installation_path/conf/nginx.conf&amp;lt;/tt&amp;gt;:&lt;br /&gt;
## Comment out section &amp;lt;tt&amp;gt;location / { ... }&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Add lines:&lt;br /&gt;
### &amp;lt;tt&amp;gt;passenger_enabled on;&amp;lt;/tt&amp;gt;&lt;br /&gt;
### &amp;lt;tt&amp;gt;root /home/your_prod_env_user/qa-reports.meego.com/current/public;&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Start nginx: &amp;lt;tt&amp;gt;$ sudo /installation_path/sbin/nginx&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Continue with the guide above from &amp;quot;Deploying QA Reports&amp;quot;&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/Eat</id>
		<title>Quality/QA-tools/Eat</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/Eat"/>
				<updated>2011-01-26T05:40:26Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: Removed the nowadays non-existing package eat-syslog-host&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Eat - Enable(s) Automated Testing =&lt;br /&gt;
&lt;br /&gt;
Eat is a set of packages that are used to configure your environment for automated testing. The packages are&lt;br /&gt;
&lt;br /&gt;
* eat-device&lt;br /&gt;
* eat-host&lt;br /&gt;
* eat-syslog-device&lt;br /&gt;
* eat-selftest&lt;br /&gt;
&lt;br /&gt;
== eat-device ==&lt;br /&gt;
This package is installed to the device under test, it puts the test control pc's ssh-key (the one in eat-host) to the device's authorized ssh-keys list to enable passwordless logins using ssh.&lt;br /&gt;
&lt;br /&gt;
== eat-host ==&lt;br /&gt;
This package is installed to the test control pc. It installs the ssh-key to the test control pc as well as testrunner-lite and test-definition as it's dependencies. eat-host also enables receiving syslogs from the device under test.&lt;br /&gt;
&lt;br /&gt;
== eat-syslog-device ==&lt;br /&gt;
Triggers sending of device syslogs to test control PC.&lt;br /&gt;
&lt;br /&gt;
== eat-selftest ==&lt;br /&gt;
This package installs an init script to the device under test that runs all test packages found in the device at boot time. The package also installs testrunner-lite and test-definition as it's dependencies.&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_production_environment</id>
		<title>Quality/QA-tools/QAReports/Setting up the production environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_production_environment"/>
				<updated>2011-01-21T03:59:57Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: Step by step instructions added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Setting up the environment =&lt;br /&gt;
&lt;br /&gt;
# Install [http://www.rubyenterpriseedition.com/ Ruby Enterprise Edition]&lt;br /&gt;
# Install and configure web server ([http://nginx.org/ nginx] or [http://httpd.apache.org/ Apache] recommended)&lt;br /&gt;
# Install [http://www.modrails.com/ Phusion Passenger]&lt;br /&gt;
# Install MySQL [http://www.mysql.com/ MySQL]&lt;br /&gt;
&lt;br /&gt;
After installing the software, run a sanity check for the environment by creating a 'hello world' rails project and corresponding virtual host:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 jakeskik@staging:~$ rails new hello&lt;br /&gt;
 jakeskik@staging:~$ cd hello/public &amp;amp;&amp;amp; pwd&lt;br /&gt;
 /home/jakeskik/hello/public&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example nginx virtual host configuration:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 server {&lt;br /&gt;
   listen 80;&lt;br /&gt;
   server_name hello.qa.leonidasoy.fi;&lt;br /&gt;
   access_log  /var/log/nginx/access.log;&lt;br /&gt;
   error_log   /var/log/nginx/error.log;&lt;br /&gt;
   root /home/jakeskik/hello/public;&lt;br /&gt;
   passenger_enabled on;&lt;br /&gt;
   rails_env production #or staging, if you want to run in staging env&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add the new virtual host to /etc/hosts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  178.79.128.101 hello.qa.leonidasoy.fi&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After restarting the web server, you should be able to access the 'hello world' project with a browser, e.g. lynx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  jakeskik@staging:~$ lynx hello.qa.leonidasoy.fi&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Deploying MeeGo QA Reports =&lt;br /&gt;
&lt;br /&gt;
QA Reports uses Capistrano to automate the deployments. The main benefit is to eliminate the risks of human errors and to enable easy and repeatable rollbacks. See [http://github.com/capistrano/capistrano/wiki Capistrano documentation] for the details.&lt;br /&gt;
&lt;br /&gt;
== Setting up Capistrano on a new server ==&lt;br /&gt;
&lt;br /&gt;
# Setup development environment on your workstation as described in [[Quality/QA-tools/QAReports/Setting_up_the_development_environment|Setting up a development environment]]&lt;br /&gt;
# Reserve a (sub)domain name for QA Reports and create a corresponding DNS entry&lt;br /&gt;
# Setup ruby, Passenger, MySQL, nginx/Apache and virtual host on production server as described above&lt;br /&gt;
# Create MySQL account and database on the production server. Make sure they match with &amp;lt;code&amp;gt;config/database.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
# Modify &amp;lt;code&amp;gt;config/deploy/staging.rb&amp;lt;/code&amp;gt; and/or &amp;lt;code&amp;gt;config/deploy/production.rb&amp;lt;/code&amp;gt; to match your configuration. Capistrano scripts are executed locally on your workstation and can be tested before checking to version control.&lt;br /&gt;
# Setup public key authentication so that you can access the deployment account from your workstation&lt;br /&gt;
# Run &amp;lt;code&amp;gt;cap [staging|production] deploy:setup&amp;lt;/code&amp;gt;. The command defaults to staging. Setup command creates the folder hierarchy and the symbolic links required by Capistrano.&lt;br /&gt;
# Follow the steps in &amp;quot;Updating QA Reports to a new version&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once the tool chain and the environment is up and running, the rest is very straight forward.&lt;br /&gt;
&lt;br /&gt;
== Updating QA Reports to a new version ==&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;git pull&amp;lt;/code&amp;gt; (In case there's changes in the deployment scripts)&lt;br /&gt;
# &amp;lt;code&amp;gt;cap [staging|production] deploy:migrations&amp;lt;/code&amp;gt;&lt;br /&gt;
# Ta-da!&lt;br /&gt;
&lt;br /&gt;
== Rolling back to previous version ==&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;cap [staging|production] deploy:rollback&amp;lt;/code&amp;gt;&lt;br /&gt;
# Ta-da!&lt;br /&gt;
&lt;br /&gt;
= Step-by-Step Instructions =&lt;br /&gt;
&lt;br /&gt;
These instructions are written based on what I had to do to get QA reports up and running. I had a clean Kubuntu 10.04 installation to start with, and as this was for demonstration purposes the same computer was acting as Production Environment and Development Environment, but under different user accounts.&lt;br /&gt;
&lt;br /&gt;
== Setting Up the Production Environment ==&lt;br /&gt;
# Install some packages: &amp;lt;tt&amp;gt;$ sudo aptitude install curl build-essential git-core mysql-server openssh-server zlib1g-dev libssl-dev libreadline5-dev libcurl4-openssl-dev&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Create a MySQL database user and the database:&lt;br /&gt;
## &amp;lt;tt&amp;gt;mysql -u root -p&amp;lt;/tt&amp;gt;&lt;br /&gt;
## &amp;lt;tt&amp;gt;create user 'meego-qa'@'localhost' identified by 'somepasswordofyourchoosing';&amp;lt;/tt&amp;gt;&lt;br /&gt;
## &amp;lt;tt&amp;gt;create database qa_reports_production character set 'utf8';&amp;lt;/tt&amp;gt;&lt;br /&gt;
## &amp;lt;tt&amp;gt;grant all privileges on qa_reports_production.* to 'meego-qa'@'localhost';&amp;lt;/tt&amp;gt;&lt;br /&gt;
## &amp;lt;tt&amp;gt;flush privileges;&amp;lt;/tt&amp;gt;&lt;br /&gt;
## &amp;lt;tt&amp;gt;quit;&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install RVM: &amp;lt;tt&amp;gt;$ bash &amp;lt; &amp;lt;( curl http://rvm.beginrescueend.com/releases/rvm-install-head )&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Set up &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; as instructed by RVM installer: The whole content into an if section, and after that loading of RVM.&lt;br /&gt;
## Run: &amp;lt;tt&amp;gt;$ source ~/.bashrc&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install Ruby Enterprise Edition: &amp;lt;tt&amp;gt;$ rvm install ree&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Use it as default: &amp;lt;tt&amp;gt;$ rvm --default use ree&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install bundler: &amp;lt;tt&amp;gt;$ gem install bundler&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install passenger: &amp;lt;tt&amp;gt;$ gem install passenger&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install nginx: &amp;lt;tt&amp;gt;$ passenger-install-nginx-module&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Notice: the default location is under &amp;lt;tt&amp;gt;/opt&amp;lt;/tt&amp;gt;. If you wish to install there, use &amp;lt;tt&amp;gt;rvmsudo&amp;lt;/tt&amp;gt;. Notice however, that part of your &amp;lt;tt&amp;gt;~/.rvm&amp;lt;/tt&amp;gt; contents will then belong to root and may cause gray hair later. I chose to install under &amp;lt;tt&amp;gt;~/nginx&amp;lt;/tt&amp;gt;.&lt;br /&gt;
# At this point, jump to [[#Setting Up the Development Environment|Development Environment section]], set it up and deploy QA Reports&lt;br /&gt;
# &amp;lt;span id=&amp;quot;continuepoint&amp;quot;&amp;gt;Once&amp;lt;/span&amp;gt; deployed correctly, edit nginx configuration &amp;lt;tt&amp;gt;installation_path/conf/nginx.conf&amp;lt;/tt&amp;gt;:&lt;br /&gt;
## Comment out section &amp;lt;tt&amp;gt;location / { ... }&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Add lines:&lt;br /&gt;
### &amp;lt;tt&amp;gt;passenger_enabled on;&amp;lt;/tt&amp;gt;&lt;br /&gt;
### &amp;lt;tt&amp;gt;root /home/your_prod_env_user/qa-reports.meego.com/current/public;&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Create file &amp;lt;tt&amp;gt;/home/your_prod_env_user/qa-reports.meego.com/shared/config/registeration_token&amp;lt;/tt&amp;gt; and add some string in it. This will be part of the registration url, e.g. &amp;lt;tt&amp;gt;foobar&amp;lt;/tt&amp;gt; will make registration to be at url &amp;lt;tt&amp;gt;/users/foobar/register&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Start nginx: &amp;lt;tt&amp;gt;$ sudo /installation_path/sbin/nginx&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Head to the server address with your web browser and hopefully see QA Reports running&lt;br /&gt;
&lt;br /&gt;
== Setting Up the Development Environment ==&lt;br /&gt;
# Set up public key authentication:&lt;br /&gt;
## Generate yourself as SSH key pair if you don't have one: &amp;lt;tt&amp;gt;$ ssh-keygen&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Add your public key to &amp;lt;tt&amp;gt;authorized_keys&amp;lt;/tt&amp;gt; file of your production environment user: &amp;lt;br&amp;gt; &amp;lt;tt&amp;gt;$ ssh your.production.user@your.production.host 'mkdir .ssh; echo '`cat ~/.ssh/id_rsa.pub`' &amp;gt;&amp;gt; ~/.ssh/authorized_keys'&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Try logging in: &amp;lt;tt&amp;gt;ssh your.production.user@your.production.host&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Set up development environment as described [[Quality/QA-tools/QAReports/Setting up the development environment|here]]&lt;br /&gt;
## Notice: Just run &amp;lt;tt&amp;gt;$ bundle install&amp;lt;/tt&amp;gt; without flags and stop there, no need to set up database or anything&lt;br /&gt;
# Edit your settings based on your production environment setup:&lt;br /&gt;
## &amp;lt;tt&amp;gt;config/deploy/production.rb&amp;lt;/tt&amp;gt;: set the correct user and host information (mysql, ssh, host)&lt;br /&gt;
## &amp;lt;tt&amp;gt;config/deploy/database.yml.erb&amp;lt;/tt&amp;gt;: set up MySQL user and database information&lt;br /&gt;
# Deploy:&lt;br /&gt;
## &amp;lt;tt&amp;gt;$ cap production deploy:setup&amp;lt;/tt&amp;gt;&lt;br /&gt;
## &amp;lt;tt&amp;gt;$ cap production deploy:migrations&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Run again - there's something fishy in the DB setup: &amp;lt;tt&amp;gt;$ cap production deploy:migrations&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Now head back to [[#continuepoint|Production Environment]] to finalize the setup&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment</id>
		<title>Quality/QA-tools/QAReports/Setting up the development environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment"/>
				<updated>2011-01-21T03:33:17Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Set up QA Reports */ Rack fixed in git, no need to install manually&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
QA Reports is a Ruby on Rails application so you need to install a bunch of stuff to get it up and running. This draft documentation is based on experiences in installation on Ubuntu 10.10&lt;br /&gt;
&lt;br /&gt;
==Installing Ruby==&lt;br /&gt;
&lt;br /&gt;
Most likely you won't succeed with the packaged version of Ruby. Thus this guide uses [http://rvm.beginrescueend.com/ Ruby Version Manager (rvm)].&lt;br /&gt;
&lt;br /&gt;
# Install dependencies: &amp;lt;tt&amp;gt;$ sudo apt-get install git-core curl&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install rvm: &amp;lt;tt&amp;gt;$ bash &amp;lt; &amp;lt;( curl http://rvm.beginrescueend.com/releases/rvm-install-head )&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Follow the instructions printed once installation is ready&lt;br /&gt;
## Install needed packages - check section ''&amp;quot;For Ruby (MRI &amp;amp; ree)  you should install the following OS dependencies&amp;quot;''&lt;br /&gt;
## Enable loading of rvm - check section ''&amp;quot;You must now complete the install by loading RVM in new shells&amp;quot;''&lt;br /&gt;
### Edit &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; as described&lt;br /&gt;
### Restart your shell to have rvm enabled&lt;br /&gt;
# Install Ruby: &amp;lt;tt&amp;gt;$ rvm install 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Set into use: &amp;lt;tt&amp;gt;$ rvm use 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set up QA Reports==&lt;br /&gt;
&lt;br /&gt;
# Clone qa-reports from git: &amp;lt;tt&amp;gt;$ git clone git://gitorious.org/meego-quality-assurance/qa-reports.git&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install preqrequisites: &amp;lt;tt&amp;gt;$ sudo apt-get install libmysqlclient-dev libxml2-dev libxslt1-dev libsqlite3-dev&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Create database config to &amp;lt;tt&amp;gt;qa-reports/config/database.yml&amp;lt;/tt&amp;gt; (example exists by name &amp;lt;tt&amp;gt;database.example.yml&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Follow the instructions then from &amp;lt;tt&amp;gt;qa-reports/README.creole&amp;lt;/tt&amp;gt;:&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem update --system&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Note: if you get an error about &amp;lt;tt&amp;gt;zlib&amp;lt;/tt&amp;gt;, follow [http://rvm.beginrescueend.com/packages/zlib/ these] instructions&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem install bundler --no-ri --no-rdoc&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ bundle install --without staging production&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:create&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:migrate&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Failed, but after rerun worked&lt;br /&gt;
# Start the server: &amp;lt;tt&amp;gt;$ rails server&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment</id>
		<title>Quality/QA-tools/QAReports/Setting up the development environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment"/>
				<updated>2011-01-19T06:11:28Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Set up QA Reports */ And more dependencies...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
QA Reports is a Ruby on Rails application so you need to install a bunch of stuff to get it up and running. This draft documentation is based on experiences in installation on Ubuntu 10.10&lt;br /&gt;
&lt;br /&gt;
==Installing Ruby==&lt;br /&gt;
&lt;br /&gt;
Most likely you won't succeed with the packaged version of Ruby. Thus this guide uses [http://rvm.beginrescueend.com/ Ruby Version Manager (rvm)].&lt;br /&gt;
&lt;br /&gt;
# Install dependencies: &amp;lt;tt&amp;gt;$ sudo apt-get install git-core curl&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install rvm: &amp;lt;tt&amp;gt;$ bash &amp;lt; &amp;lt;( curl http://rvm.beginrescueend.com/releases/rvm-install-head )&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Follow the instructions printed once installation is ready&lt;br /&gt;
## Install needed packages - check section ''&amp;quot;For Ruby (MRI &amp;amp; ree)  you should install the following OS dependencies&amp;quot;''&lt;br /&gt;
## Enable loading of rvm - check section ''&amp;quot;You must now complete the install by loading RVM in new shells&amp;quot;''&lt;br /&gt;
### Edit &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; as described&lt;br /&gt;
### Restart your shell to have rvm enabled&lt;br /&gt;
# Install Ruby: &amp;lt;tt&amp;gt;$ rvm install 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Set into use: &amp;lt;tt&amp;gt;$ rvm use 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set up QA Reports==&lt;br /&gt;
&lt;br /&gt;
# Clone qa-reports from git: &amp;lt;tt&amp;gt;$ git clone git://gitorious.org/meego-quality-assurance/qa-reports.git&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install preqrequisites: &amp;lt;tt&amp;gt;$ sudo apt-get install libmysqlclient-dev libxml2-dev libxslt1-dev libsqlite3-dev&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Create database config to &amp;lt;tt&amp;gt;qa-reports/config/database.yml&amp;lt;/tt&amp;gt; (example exists by name &amp;lt;tt&amp;gt;database.example.yml&amp;lt;/tt&amp;gt;)&lt;br /&gt;
# Install gem &amp;lt;tt&amp;gt;rack&amp;lt;/tt&amp;gt; to get what's needed to be able to use the git version: &amp;lt;tt&amp;gt;$ gem install rack&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Follow the instructions then from &amp;lt;tt&amp;gt;qa-reports/README.creole&amp;lt;/tt&amp;gt;:&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem update --system&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Note: if you get an error about &amp;lt;tt&amp;gt;zlib&amp;lt;/tt&amp;gt;, follow [http://rvm.beginrescueend.com/packages/zlib/ these] instructions&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem install bundler --no-ri --no-rdoc&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ bundle install --without staging production&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:create&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:migrate&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Failed, but after rerun worked&lt;br /&gt;
# Start the server: &amp;lt;tt&amp;gt;$ rails server&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment</id>
		<title>Quality/QA-tools/QAReports/Setting up the development environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment"/>
				<updated>2011-01-19T06:02:42Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Set up QA Reports */ Rack installation manually first makes qa-reports bundling work, it seems&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
QA Reports is a Ruby on Rails application so you need to install a bunch of stuff to get it up and running. This draft documentation is based on experiences in installation on Ubuntu 10.10&lt;br /&gt;
&lt;br /&gt;
==Installing Ruby==&lt;br /&gt;
&lt;br /&gt;
Most likely you won't succeed with the packaged version of Ruby. Thus this guide uses [http://rvm.beginrescueend.com/ Ruby Version Manager (rvm)].&lt;br /&gt;
&lt;br /&gt;
# Install dependencies: &amp;lt;tt&amp;gt;$ sudo apt-get install git-core curl&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install rvm: &amp;lt;tt&amp;gt;$ bash &amp;lt; &amp;lt;( curl http://rvm.beginrescueend.com/releases/rvm-install-head )&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Follow the instructions printed once installation is ready&lt;br /&gt;
## Install needed packages - check section ''&amp;quot;For Ruby (MRI &amp;amp; ree)  you should install the following OS dependencies&amp;quot;''&lt;br /&gt;
## Enable loading of rvm - check section ''&amp;quot;You must now complete the install by loading RVM in new shells&amp;quot;''&lt;br /&gt;
### Edit &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; as described&lt;br /&gt;
### Restart your shell to have rvm enabled&lt;br /&gt;
# Install Ruby: &amp;lt;tt&amp;gt;$ rvm install 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Set into use: &amp;lt;tt&amp;gt;$ rvm use 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set up QA Reports==&lt;br /&gt;
&lt;br /&gt;
# Clone qa-reports from git: &amp;lt;tt&amp;gt;$ git clone git://gitorious.org/meego-quality-assurance/qa-reports.git&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install preqrequisites: &amp;lt;tt&amp;gt;$ sudo apt-get install libmysqlclient-dev libxml2-dev libxslt1-dev&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Create database config to &amp;lt;tt&amp;gt;qa-reports/config/database.yml&amp;lt;/tt&amp;gt; (example exists by name &amp;lt;tt&amp;gt;database.example.yml&amp;lt;/tt&amp;gt;)&lt;br /&gt;
# Install gem &amp;lt;tt&amp;gt;rack&amp;lt;/tt&amp;gt; to get what's needed to be able to use the git version: &amp;lt;tt&amp;gt;$ gem install rack&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Follow the instructions then from &amp;lt;tt&amp;gt;qa-reports/README.creole&amp;lt;/tt&amp;gt;:&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem update --system&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Note: if you get an error about &amp;lt;tt&amp;gt;zlib&amp;lt;/tt&amp;gt;, follow [http://rvm.beginrescueend.com/packages/zlib/ these] instructions&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem install bundler --no-ri --no-rdoc&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ bundle install --without staging production&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:create&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:migrate&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Failed, but after rerun worked&lt;br /&gt;
# Start the server: &amp;lt;tt&amp;gt;$ rails server&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment</id>
		<title>Quality/QA-tools/QAReports/Setting up the development environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment"/>
				<updated>2011-01-19T05:58:14Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Set up QA Reports */ More dependencies are needed to get gems installed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
QA Reports is a Ruby on Rails application so you need to install a bunch of stuff to get it up and running. This draft documentation is based on experiences in installation on Ubuntu 10.10&lt;br /&gt;
&lt;br /&gt;
==Installing Ruby==&lt;br /&gt;
&lt;br /&gt;
Most likely you won't succeed with the packaged version of Ruby. Thus this guide uses [http://rvm.beginrescueend.com/ Ruby Version Manager (rvm)].&lt;br /&gt;
&lt;br /&gt;
# Install dependencies: &amp;lt;tt&amp;gt;$ sudo apt-get install git-core curl&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install rvm: &amp;lt;tt&amp;gt;$ bash &amp;lt; &amp;lt;( curl http://rvm.beginrescueend.com/releases/rvm-install-head )&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Follow the instructions printed once installation is ready&lt;br /&gt;
## Install needed packages - check section ''&amp;quot;For Ruby (MRI &amp;amp; ree)  you should install the following OS dependencies&amp;quot;''&lt;br /&gt;
## Enable loading of rvm - check section ''&amp;quot;You must now complete the install by loading RVM in new shells&amp;quot;''&lt;br /&gt;
### Edit &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; as described&lt;br /&gt;
### Restart your shell to have rvm enabled&lt;br /&gt;
# Install Ruby: &amp;lt;tt&amp;gt;$ rvm install 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Set into use: &amp;lt;tt&amp;gt;$ rvm use 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set up QA Reports==&lt;br /&gt;
&lt;br /&gt;
# Clone qa-reports from git: &amp;lt;tt&amp;gt;$ git clone git://gitorious.org/meego-quality-assurance/qa-reports.git&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install preqrequisites: &amp;lt;tt&amp;gt;$ sudo apt-get install libmysqlclient-dev libxml2-dev libxslt1-dev&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Create database config to &amp;lt;tt&amp;gt;qa-reports/config/database.yml&amp;lt;/tt&amp;gt; (example exists by name &amp;lt;tt&amp;gt;database.example.yml&amp;lt;/tt&amp;gt;)&lt;br /&gt;
# Check &amp;lt;tt&amp;gt;qa-reports/Gemfile&amp;lt;/tt&amp;gt;&lt;br /&gt;
## If there's a line &amp;lt;tt&amp;gt;gem 'rack', :git =&amp;gt; &amp;quot;git://github.com/rack/rack.git&amp;quot;&amp;lt;/tt&amp;gt;, change it to &amp;lt;tt&amp;gt;gem 'rack', '1.2.1'&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Apparently the dependencies are not installed with the git approach which will lead into server starting failure&lt;br /&gt;
&lt;br /&gt;
Follow the instructions then from &amp;lt;tt&amp;gt;qa-reports/README.creole&amp;lt;/tt&amp;gt;:&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem update --system&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Note: if you get an error about &amp;lt;tt&amp;gt;zlib&amp;lt;/tt&amp;gt;, follow [http://rvm.beginrescueend.com/packages/zlib/ these] instructions&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem install bundler --no-ri --no-rdoc&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ bundle install --without staging production&amp;lt;/tt&amp;gt;&lt;br /&gt;
## If you had to edit the Gemfile, you can now change it back the way it was and run the &amp;lt;tt&amp;gt;bundle&amp;lt;/tt&amp;gt; command again to make it use the version in git (if that's needed)&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:create&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:migrate&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Failed, but after rerun worked&lt;br /&gt;
# Start the server: &amp;lt;tt&amp;gt;$ rails server&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools</id>
		<title>Quality/QA-tools</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools"/>
				<updated>2011-01-06T09:30:11Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Tools and Maintainers */ And mnts back, repo at meego.gitorious.org did not have anything in it&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Quality Assurance (QA) Tools =&lt;br /&gt;
&lt;br /&gt;
Quality Assurance tools are developed to ensure MeeGo SW quality. QA tools team develops and maintains tools for Quality Assurance.&lt;br /&gt;
&lt;br /&gt;
 Open source tools  – available for all, available for development and contributions. Make people accountable for quality.&lt;br /&gt;
&lt;br /&gt;
Anyone is welcome to contribute and non-member contributions will be treated with same process and review as member contributions. We follow [http://meego.com/about/contribution-guidelines MeeGo contribution guidelines]. In addition, you may take personal clone from our [http://meego.gitorious.org/meego-quality-assurance/ git repositories] and create merge request. Tool maintainers in our projects will review your contributions and decide on merge.&lt;br /&gt;
&lt;br /&gt;
'''Targets:'''&lt;br /&gt;
&lt;br /&gt;
 * Improve MeeGo test reporting tools - target from MeeGo Quality Assurance&lt;br /&gt;
   * Currently test reports are published manually to wiki  &lt;br /&gt;
 * Improve MeeGo test automation (execution and software installation) - target from MeeGo release engineering&lt;br /&gt;
&lt;br /&gt;
&amp;quot;As Core OS release release manager I want to verify trunk:testing packages frequently so that I know the quality of nightly/weekly releases.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Tools and Maintainers ==&lt;br /&gt;
&lt;br /&gt;
Tool maintainers are selected based on developer experience with particular tool/package or seniority. Tool maintainers have been agreed [[Quality/QA-tools/Meetings|in the QA-tools weekly meeting]] Tuesday September 7th 2010. Changes, if needed, are discussed also there.&lt;br /&gt;
&lt;br /&gt;
In practice only tool maintainers will have commit and review right to particular repository - later several people may have rights to repository based on merit (as proposed by tool maintainer). Others must follow [http://meego.com/about/contribution-guidelines MeeGo contribution guidelines] to submit patches or personal clone + merge request approach. &lt;br /&gt;
 &lt;br /&gt;
The maintainer of the tree shall update the changelog.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|'''Tool (link to wiki page)''' ||'''Gitorious'''||'''Maintainer''' ||'''Substitute'''&lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/QA-tools/Test-definition|test-definition]]||[http://meego.gitorious.org/meego-quality-assurance/test-definition Gitorious] || Sampo Saaristo || Timo Härkönen&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Testrunner-lite|testrunner-lite]] ||[http://meego.gitorious.org/meego-quality-assurance/testrunner-lite Gitorious] || Sampo Saaristo || Kyösti Ranto&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Testrunner|Testrunner]] || [http://meego.gitorious.org/meego-quality-assurance/testrunner Gitorious] || Kyösti Ranto || Timo Härkönen &lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/QA-tools/Testplanner|Testplanner]] ||[http://meego.gitorious.org/meego-quality-assurance/testplanner Gitorious] ||  Kyösti Ranto || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Eat|eat - enables automated testing]] ||[http://meego.gitorious.org/meego-quality-assurance/enables-automated-testing Gitorious] ||  Timo Härkönen || Timo Mäkimattila&lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/QA-tools/OTS|ots - open testing system]] ||[http://meego.gitorious.org/meego-quality-assurance/ots Gitorious] ||  Teemu Vainio || Tom Galvin&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Autotest-guide#Automatic_image_installations|MeeGo Automated installer]] ||[http://gitorious.org/qa-tools/meego-ai Gitorious] ||  Timo Härkönen || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/TestSuite/MCTS|MeeGo Core Test Suite]] || [http://meego.gitorious.org/meego-quality-assurance/mcts/ Gitorious] ||Matti Salmi || Jeff Zheng&lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/Netbook Test Suite and Utilities|MeeGo Netbook Test Suite]] || [http://gitorious.org/qa-tools/mnts/ Gitorious] ||Jeff Zheng || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/qtuitest-mbt-adapter|Model-Based Testing adapter for qtuitest]]  || [http://gitorious.org/qa-tools/qtuitest-mbt-adapter Gitorious] || Riku Halonen || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Min|MIN test framework]] || [http://meego.gitorious.org/meego-quality-assurance/min Gitorious] ||  Sampo Saaristo || Timo Mäkimattila&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/TDriver|Testability Driver]] || [http://gitorious.org/TDriver Gitorious] ||  Petri Kiiskinen || Tatu Lahtela&lt;br /&gt;
|-&lt;br /&gt;
| Rich Core dumper || [http://meego.gitorious.org/meego-quality-assurance/rich-core Gitorious] || Carol Rus || Raimo Gratseff&lt;br /&gt;
|-&lt;br /&gt;
| Crash Reporter || [http://meego.gitorious.org/meego-quality-assurance/crash-reporter Gitorious] || Carol Rus || Raimo Gratseff&lt;br /&gt;
|-&lt;br /&gt;
| Crash Reporter settings || [http://meego.gitorious.org/meego-quality-assurance/crash-reporter-settings-public Gitorious] || Carol Rus || Raimo Gratseff&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/hat-control|Hardware Accessory for Testing (HAT)]] || [http://meego.gitorious.org/meego-quality-assurance/hat-control Gitorious] || Marko Junttila || Riku Halonen&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/QAReports|QA Reports]] || [http://meego.gitorious.org/meego-quality-assurance/qa-reports Gitorious] || Sami Hangaslammi || Jarno Keskikangas&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Scripts_and_utils|Scripts and utils]] || [http://meego.gitorious.com/meego-quality-assurance/scripts-and-utils Gitorious] || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/TestSuite/handset-test-suite/handset-ux-test_Releases | handset_ux_tests]] || [http://meego.gitorious.com/meego-quality-assurance/handset-ux-tests Gitorious] || JessicaJi || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/MeeGo_Fast_Feedback_Testing|MeeGo Fast Feedback Testing (MeeGo-FFT)]] || [http://meego.gitorious.org/meego-quality-assurance/meego-testing-hudson-plugin Gitorious] || Alexey Kuznetsov || Timo Härkönen&lt;br /&gt;
|-&lt;br /&gt;
| Service OS based Flasher || [http://meego.gitorious.org/meego-quality-assurance/meego-ai-serviceos Gitorious] || Jing Wang || N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You can install Testrunner UI, testrunner-lite, Testplanner, OTS, Meego-ai and eat from Tools:Testing repository. The instructions for setting up the repositories can be found [[Quality/QA-tools/How_to_set_up_repositories|here]].&lt;br /&gt;
&lt;br /&gt;
See the rest of our team members and our collaboration spaces [[Quality/QA-tools#Team_Members_and_Collaboration_Spaces|below]]. If you are interested in the user experience work regarding these tools, you can find more information [[Quality/QA-tools/User experience|here]].&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The figure below tries to summarize the relations and tasks of the tools when used in test automation context.&lt;br /&gt;
&lt;br /&gt;
[[File:testautomationtools.png]]&lt;br /&gt;
&lt;br /&gt;
xfig file:[[File:qatools.fig]]&lt;br /&gt;
&lt;br /&gt;
== Release Practices ==&lt;br /&gt;
&lt;br /&gt;
Here's the workflow for QA-tools release practices.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|'''Role'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| Developer || Anyone who wants to participate in qa-tools development &lt;br /&gt;
|-&lt;br /&gt;
| VCS Maintainer || Component owner who has commit rights in version control system (VCS)&lt;br /&gt;
|-&lt;br /&gt;
| Package Maintainer || Integrator whose responsibility is the OBS packaging&lt;br /&gt;
|-&lt;br /&gt;
| Release Management || Third party who is responsible of trunk:testing releases(?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:Release.png]]&lt;br /&gt;
&lt;br /&gt;
Kivio file:&lt;br /&gt;
[[File:Release.flw]]&lt;br /&gt;
&lt;br /&gt;
# Developer creates merge request(s) in gitorious.&lt;br /&gt;
# VCS Maintainer tests and accepts merge requests.&lt;br /&gt;
# VCS Maintainer checks/updates change logs.&lt;br /&gt;
# VCS Maintainer tags a version.&lt;br /&gt;
# VCS maintainer sends email to [http://lists.meego.com/pipermail/meego-qa/ meego-qa mailing list] based on the following template&lt;br /&gt;
Topic: Integration request: package-name version&lt;br /&gt;
 PACKAGE: package-name&lt;br /&gt;
 TAG: tag name&lt;br /&gt;
 URL: link to sources&lt;br /&gt;
 CHANGES: short description of changes containing bugs.meego.com bug numbers of fixed bugs&lt;br /&gt;
# Package maintainer updates the OBS package.&lt;br /&gt;
# Package maintainer tests the OBS package.&lt;br /&gt;
# If the package belongs to tools:testing and passes testing, Package Maintainer may accept it. If the package belongs to trunk:testing, Package Maintainer creates a promotional request to Release Management. (If the package belongs to both repositories, we let the Release Management set bugs fixed by the package to RELEASED state).&lt;br /&gt;
# Host side tools are updated to tools:testing after verifying functionality&lt;br /&gt;
# Package maintainer replies to meego-qa list about the actions done with the updated package. e.g. 'Updated in devel:quality and sent promotion request to testing'&lt;br /&gt;
# Release Management accepts the package. Or not. (Follow meego-packaging and meego-commits.)&lt;br /&gt;
&lt;br /&gt;
If you shoot a video to YouTube, promote it on meego-qa mailing list!&lt;br /&gt;
&lt;br /&gt;
''' YouTube videos '''&lt;br /&gt;
&lt;br /&gt;
YouTube is a good way to communicate new features. You can find existing demo videos on [http://www.youtube.com/user/meegoqatools meegoqatools channel on Youtube].&lt;br /&gt;
&lt;br /&gt;
If you shoot a video to YouTube, promote it on meego-qa mailing list!&lt;br /&gt;
&lt;br /&gt;
You can find some hints how to shoot, edit, and upload a video here: [[YouTube_Hints]]&lt;br /&gt;
&lt;br /&gt;
=== Release checklist ===&lt;br /&gt;
To make sure fixes are released without delay, check that the following conditions are met&lt;br /&gt;
&lt;br /&gt;
# Change logs are updated and contain relevant references to MeeGo bugzilla&lt;br /&gt;
# Created obs request include fixes bug numbers from MeeGo bugzilla&lt;br /&gt;
# Bugzilla items listed in changes are set as resolved&lt;br /&gt;
# Spec file matches [[Packaging/Guidelines|MeeGo packaging guidelines]]&lt;br /&gt;
# Rpmlint warnings are either fixed or explained by comments in the spec file. e.g. eat packages install files into root's home and the reasoning for it needs to be explained&lt;br /&gt;
# Host side tool packages use the same source tar ball to produce debian and rpm packages&lt;br /&gt;
&lt;br /&gt;
== Features and Bugs ==&lt;br /&gt;
Want to report an feature idea or bug to us? - [http://bugs.meego.com/enter_bug.cgi?product=MeeGo%20Quality%20Assurance Please do it here]&lt;br /&gt;
 &lt;br /&gt;
* [http://bugs.meego.com/buglist.cgi?query_format=advanced&amp;amp;order=Importance&amp;amp;bug_status=ASSIGNED&amp;amp;component=eat&amp;amp;component=min&amp;amp;component=ots&amp;amp;component=TDriver&amp;amp;component=testdefinition&amp;amp;component=Testplanner&amp;amp;component=testrunner%20UI&amp;amp;component=testrunner-lite&amp;amp;classification=MeeGo%20Projects&amp;amp;product=Meego%20Quality%20Assurance Assigned bugs and features - Working on it]&lt;br /&gt;
* [http://bugs.meego.com/buglist.cgi?query_format=advanced&amp;amp;order=Importance&amp;amp;bug_status=NEW&amp;amp;bug_status=NEEDINFO&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=WAITING%20FOR%20UPSTREAM&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;component=eat&amp;amp;component=min&amp;amp;component=ots&amp;amp;component=TDriver&amp;amp;component=testdefinition&amp;amp;component=Testplanner&amp;amp;component=testrunner%20UI&amp;amp;component=testrunner-lite&amp;amp;classification=MeeGo%20Projects&amp;amp;product=MeeGo%20Quality%20Assurance All open features and bugs in priority order]&lt;br /&gt;
&lt;br /&gt;
Bugzilla workflow: [[Bugzilla/how-report-bugs]]&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
This section will contain links to various guides and user documentation. See [[Quality/QA-tools#Tools_and_Maintainers|the wiki pages of the tools]] for tool-specific documentation.&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/Autotest-guide|Autotest-Guide]]&lt;br /&gt;
* [[Quality/QA-tools/How_to_set_up_repositories|How to set up the repositories that are needed to install QA tools]]&lt;br /&gt;
&lt;br /&gt;
== Design/ Planning ==&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/MCTS test automation design|MCTS Test Automation]] (QA Tools support for MCTS) '''WORK IN PROGRESS'''&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
&lt;br /&gt;
All meetings will be held in &amp;lt;code&amp;gt;#meego-meeting&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;irc.freenode.net&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Team meetings ===&lt;br /&gt;
&lt;br /&gt;
QA tools team meetings will be held on need basis for specific topics. This was agreed in [http://trac.tspre.org/meetbot/meego-meeting/2010/meego-meeting.2010-12-07-11.59.html the last weekly meeting held on December 7th 2010]&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/Meetings|Meeting agendas and minutes]]&lt;br /&gt;
&lt;br /&gt;
=== Architecture meetings ===&lt;br /&gt;
&lt;br /&gt;
Architecture meetings will be held on-demand basis i.e. when topics do not fit in QA-Tools weekly meeting time frame.&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/Arch-Meetings|Meeting agendas and minutes]]&lt;br /&gt;
&lt;br /&gt;
=== Workshops ===&lt;br /&gt;
&lt;br /&gt;
Face-2-face meetings within the team.&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/Workshops|Meeting agendas and minutes]]&lt;br /&gt;
&lt;br /&gt;
== Team Members and Collaboration Spaces==&lt;br /&gt;
&lt;br /&gt;
The current team members are (in no particular order):&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Role'''&lt;br /&gt;
| '''Affiliation'''&lt;br /&gt;
| '''IRC nickname'''&lt;br /&gt;
|- &lt;br /&gt;
| Ville Ilvonen || Team lead (act.) || Nokia || vilvo&lt;br /&gt;
|-&lt;br /&gt;
| Riku Halonen || Team member || Nokia || rikhalon&lt;br /&gt;
|-&lt;br /&gt;
| Kari Sievi || Team member || Digia || sievi&lt;br /&gt;
|-&lt;br /&gt;
| Timo Härkönen || Team member || Digia || timoph  &lt;br /&gt;
|-&lt;br /&gt;
| Carol Rus || Team member || Digia || carrus  &lt;br /&gt;
|-&lt;br /&gt;
| Sami Lahtinen || Team member || Digia || slahtinen  &lt;br /&gt;
|-&lt;br /&gt;
| Raimo Gratseff || Team member || Digia || rrraimo  &lt;br /&gt;
|-&lt;br /&gt;
| Kyösti Ranto || Team member || Digia || kyranto&lt;br /&gt;
|-&lt;br /&gt;
| Arto Sinnelä || Team member || Digia || asinnela&lt;br /&gt;
|-&lt;br /&gt;
| Joonas Kylänpää || Team member || Digia || Kaadlajk&lt;br /&gt;
|-&lt;br /&gt;
| Timo Mäkimattila || Team member || Digia || timakima&lt;br /&gt;
|-&lt;br /&gt;
| Elias Luttinen || Team member || Digia || eluttine&lt;br /&gt;
|-&lt;br /&gt;
| Ville Niutanen || Team member || Digia || Villen&lt;br /&gt;
|-&lt;br /&gt;
| Esa-Pekka Miettinen || Team member || Digia || E-P&lt;br /&gt;
|-&lt;br /&gt;
| Vesa Poikajärvi || Team member || Digia || vesse&lt;br /&gt;
|-  &lt;br /&gt;
| Alexey Kuznetsov || Team member || Digia || alkuznet&lt;br /&gt;
|-  &lt;br /&gt;
| Sergey Timofeev || Team member || Digia || setimofe&lt;br /&gt;
|-  &lt;br /&gt;
| Daniil Chuiko || Team member || Digia || dachuiko&lt;br /&gt;
|-&lt;br /&gt;
| Sampo Saaristo || Team member || Sofica || sampos&lt;br /&gt;
|-  &lt;br /&gt;
| Ling Yu || Team member || Intel || -&lt;br /&gt;
|-&lt;br /&gt;
| Jing Wang || Team member || Intel || -&lt;br /&gt;
|-  &lt;br /&gt;
| Teemu Vainio || Team member || Ixonos || tvainio&lt;br /&gt;
|-  &lt;br /&gt;
| Tuomo Mäkinen || Team member || Ixonos || -&lt;br /&gt;
|-  &lt;br /&gt;
| Jouni Leppäkases || Team member || Ixonos || jouni&lt;br /&gt;
|-  &lt;br /&gt;
| Tom Galvin || Team member || Ixonos || -&lt;br /&gt;
|-&lt;br /&gt;
| Jarno Keskikangas || Team member || Leonidas || jakeskik&lt;br /&gt;
|- &lt;br /&gt;
| Janne Hietamäki || Team member || Leonidas || _janne&lt;br /&gt;
|- &lt;br /&gt;
| Sami Hangaslammi || Team member || Leonidas || sahangas&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Team communication is in English. Our collaboration spaces are:&lt;br /&gt;
* [http://lists.meego.com/listinfo/meego-qa meego-qa@lists.meego.com mailing list]&lt;br /&gt;
* [http://lists.meego.com/listinfo/meego-dev meego-dev@meego.com mailing list], please prefix with 'QA-tools' for team related topics.&lt;br /&gt;
** Please also poke team members or Ville Ilvonen either by email or on IRC because of high traffic @ meego-dev&lt;br /&gt;
* [http://webchat.freenode.net/?channels=meego-qa-tools #meego-qa-tools IRC channel on irc.freenode.net]&lt;br /&gt;
** [http://timoph.fi/qa-tools-stats/ #meego-qa-tools statistics]&lt;br /&gt;
** [http://timoph.fi/qa-tools-logs/ #meego-qa-tools irc logs]&lt;br /&gt;
* Gitorious team, http://meego.gitorious.org/meego-quality-assurance/&lt;br /&gt;
* [http://www.youtube.com/user/meegoqatools Youtube channel for demo videos]&lt;br /&gt;
* [http://meegoqatools.wordpress.com/ QA-tools team blog]&lt;br /&gt;
* MeeGo OBS - devel:quality&lt;br /&gt;
* This wiki area&lt;br /&gt;
* [[Quality/QA-tools/ServiceOS|ServiceOS]]&lt;br /&gt;
* [[Quality/QA-tools/PXEInstall|PXEInstallation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:QA]]&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools</id>
		<title>Quality/QA-tools</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools"/>
				<updated>2011-01-06T09:23:36Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Tools and Maintainers */ Updated mcts and mnts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Quality Assurance (QA) Tools =&lt;br /&gt;
&lt;br /&gt;
Quality Assurance tools are developed to ensure MeeGo SW quality. QA tools team develops and maintains tools for Quality Assurance.&lt;br /&gt;
&lt;br /&gt;
 Open source tools  – available for all, available for development and contributions. Make people accountable for quality.&lt;br /&gt;
&lt;br /&gt;
Anyone is welcome to contribute and non-member contributions will be treated with same process and review as member contributions. We follow [http://meego.com/about/contribution-guidelines MeeGo contribution guidelines]. In addition, you may take personal clone from our [http://meego.gitorious.org/meego-quality-assurance/ git repositories] and create merge request. Tool maintainers in our projects will review your contributions and decide on merge.&lt;br /&gt;
&lt;br /&gt;
'''Targets:'''&lt;br /&gt;
&lt;br /&gt;
 * Improve MeeGo test reporting tools - target from MeeGo Quality Assurance&lt;br /&gt;
   * Currently test reports are published manually to wiki  &lt;br /&gt;
 * Improve MeeGo test automation (execution and software installation) - target from MeeGo release engineering&lt;br /&gt;
&lt;br /&gt;
&amp;quot;As Core OS release release manager I want to verify trunk:testing packages frequently so that I know the quality of nightly/weekly releases.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Tools and Maintainers ==&lt;br /&gt;
&lt;br /&gt;
Tool maintainers are selected based on developer experience with particular tool/package or seniority. Tool maintainers have been agreed [[Quality/QA-tools/Meetings|in the QA-tools weekly meeting]] Tuesday September 7th 2010. Changes, if needed, are discussed also there.&lt;br /&gt;
&lt;br /&gt;
In practice only tool maintainers will have commit and review right to particular repository - later several people may have rights to repository based on merit (as proposed by tool maintainer). Others must follow [http://meego.com/about/contribution-guidelines MeeGo contribution guidelines] to submit patches or personal clone + merge request approach. &lt;br /&gt;
 &lt;br /&gt;
The maintainer of the tree shall update the changelog.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|'''Tool (link to wiki page)''' ||'''Gitorious'''||'''Maintainer''' ||'''Substitute'''&lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/QA-tools/Test-definition|test-definition]]||[http://meego.gitorious.org/meego-quality-assurance/test-definition Gitorious] || Sampo Saaristo || Timo Härkönen&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Testrunner-lite|testrunner-lite]] ||[http://meego.gitorious.org/meego-quality-assurance/testrunner-lite Gitorious] || Sampo Saaristo || Kyösti Ranto&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Testrunner|Testrunner]] || [http://meego.gitorious.org/meego-quality-assurance/testrunner Gitorious] || Kyösti Ranto || Timo Härkönen &lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/QA-tools/Testplanner|Testplanner]] ||[http://meego.gitorious.org/meego-quality-assurance/testplanner Gitorious] ||  Kyösti Ranto || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Eat|eat - enables automated testing]] ||[http://meego.gitorious.org/meego-quality-assurance/enables-automated-testing Gitorious] ||  Timo Härkönen || Timo Mäkimattila&lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/QA-tools/OTS|ots - open testing system]] ||[http://meego.gitorious.org/meego-quality-assurance/ots Gitorious] ||  Teemu Vainio || Tom Galvin&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Autotest-guide#Automatic_image_installations|MeeGo Automated installer]] ||[http://gitorious.org/qa-tools/meego-ai Gitorious] ||  Timo Härkönen || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/TestSuite/MCTS|MeeGo Core Test Suite]] || [http://meego.gitorious.org/meego-quality-assurance/mcts/ Gitorious] ||Matti Salmi || Jeff Zheng&lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/Netbook Test Suite and Utilities|MeeGo Netbook Test Suite]] || [http://meego.gitorious.org/meego-quality-assurance/mnts/ Gitorious] ||Jeff Zheng || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/qtuitest-mbt-adapter|Model-Based Testing adapter for qtuitest]]  || [http://gitorious.org/qa-tools/qtuitest-mbt-adapter Gitorious] || Riku Halonen || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Min|MIN test framework]] || [http://meego.gitorious.org/meego-quality-assurance/min Gitorious] ||  Sampo Saaristo || Timo Mäkimattila&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/TDriver|Testability Driver]] || [http://gitorious.org/TDriver Gitorious] ||  Petri Kiiskinen || Tatu Lahtela&lt;br /&gt;
|-&lt;br /&gt;
| Rich Core dumper || [http://meego.gitorious.org/meego-quality-assurance/rich-core Gitorious] || Carol Rus || Raimo Gratseff&lt;br /&gt;
|-&lt;br /&gt;
| Crash Reporter || [http://meego.gitorious.org/meego-quality-assurance/crash-reporter Gitorious] || Carol Rus || Raimo Gratseff&lt;br /&gt;
|-&lt;br /&gt;
| Crash Reporter settings || [http://meego.gitorious.org/meego-quality-assurance/crash-reporter-settings-public Gitorious] || Carol Rus || Raimo Gratseff&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/hat-control|Hardware Accessory for Testing (HAT)]] || [http://meego.gitorious.org/meego-quality-assurance/hat-control Gitorious] || Marko Junttila || Riku Halonen&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/QAReports|QA Reports]] || [http://meego.gitorious.org/meego-quality-assurance/qa-reports Gitorious] || Sami Hangaslammi || Jarno Keskikangas&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Scripts_and_utils|Scripts and utils]] || [http://meego.gitorious.com/meego-quality-assurance/scripts-and-utils Gitorious] || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/TestSuite/handset-test-suite/handset-ux-test_Releases | handset_ux_tests]] || [http://meego.gitorious.com/meego-quality-assurance/handset-ux-tests Gitorious] || JessicaJi || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/MeeGo_Fast_Feedback_Testing|MeeGo Fast Feedback Testing (MeeGo-FFT)]] || [http://meego.gitorious.org/meego-quality-assurance/meego-testing-hudson-plugin Gitorious] || Alexey Kuznetsov || Timo Härkönen&lt;br /&gt;
|-&lt;br /&gt;
| Service OS based Flasher || [http://meego.gitorious.org/meego-quality-assurance/meego-ai-serviceos Gitorious] || Jing Wang || N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You can install Testrunner UI, testrunner-lite, Testplanner, OTS, Meego-ai and eat from Tools:Testing repository. The instructions for setting up the repositories can be found [[Quality/QA-tools/How_to_set_up_repositories|here]].&lt;br /&gt;
&lt;br /&gt;
See the rest of our team members and our collaboration spaces [[Quality/QA-tools#Team_Members_and_Collaboration_Spaces|below]]. If you are interested in the user experience work regarding these tools, you can find more information [[Quality/QA-tools/User experience|here]].&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The figure below tries to summarize the relations and tasks of the tools when used in test automation context.&lt;br /&gt;
&lt;br /&gt;
[[File:testautomationtools.png]]&lt;br /&gt;
&lt;br /&gt;
xfig file:[[File:qatools.fig]]&lt;br /&gt;
&lt;br /&gt;
== Release Practices ==&lt;br /&gt;
&lt;br /&gt;
Here's the workflow for QA-tools release practices.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|'''Role'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| Developer || Anyone who wants to participate in qa-tools development &lt;br /&gt;
|-&lt;br /&gt;
| VCS Maintainer || Component owner who has commit rights in version control system (VCS)&lt;br /&gt;
|-&lt;br /&gt;
| Package Maintainer || Integrator whose responsibility is the OBS packaging&lt;br /&gt;
|-&lt;br /&gt;
| Release Management || Third party who is responsible of trunk:testing releases(?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:Release.png]]&lt;br /&gt;
&lt;br /&gt;
Kivio file:&lt;br /&gt;
[[File:Release.flw]]&lt;br /&gt;
&lt;br /&gt;
# Developer creates merge request(s) in gitorious.&lt;br /&gt;
# VCS Maintainer tests and accepts merge requests.&lt;br /&gt;
# VCS Maintainer checks/updates change logs.&lt;br /&gt;
# VCS Maintainer tags a version.&lt;br /&gt;
# VCS maintainer sends email to [http://lists.meego.com/pipermail/meego-qa/ meego-qa mailing list] based on the following template&lt;br /&gt;
Topic: Integration request: package-name version&lt;br /&gt;
 PACKAGE: package-name&lt;br /&gt;
 TAG: tag name&lt;br /&gt;
 URL: link to sources&lt;br /&gt;
 CHANGES: short description of changes containing bugs.meego.com bug numbers of fixed bugs&lt;br /&gt;
# Package maintainer updates the OBS package.&lt;br /&gt;
# Package maintainer tests the OBS package.&lt;br /&gt;
# If the package belongs to tools:testing and passes testing, Package Maintainer may accept it. If the package belongs to trunk:testing, Package Maintainer creates a promotional request to Release Management. (If the package belongs to both repositories, we let the Release Management set bugs fixed by the package to RELEASED state).&lt;br /&gt;
# Host side tools are updated to tools:testing after verifying functionality&lt;br /&gt;
# Package maintainer replies to meego-qa list about the actions done with the updated package. e.g. 'Updated in devel:quality and sent promotion request to testing'&lt;br /&gt;
# Release Management accepts the package. Or not. (Follow meego-packaging and meego-commits.)&lt;br /&gt;
&lt;br /&gt;
If you shoot a video to YouTube, promote it on meego-qa mailing list!&lt;br /&gt;
&lt;br /&gt;
''' YouTube videos '''&lt;br /&gt;
&lt;br /&gt;
YouTube is a good way to communicate new features. You can find existing demo videos on [http://www.youtube.com/user/meegoqatools meegoqatools channel on Youtube].&lt;br /&gt;
&lt;br /&gt;
If you shoot a video to YouTube, promote it on meego-qa mailing list!&lt;br /&gt;
&lt;br /&gt;
You can find some hints how to shoot, edit, and upload a video here: [[YouTube_Hints]]&lt;br /&gt;
&lt;br /&gt;
=== Release checklist ===&lt;br /&gt;
To make sure fixes are released without delay, check that the following conditions are met&lt;br /&gt;
&lt;br /&gt;
# Change logs are updated and contain relevant references to MeeGo bugzilla&lt;br /&gt;
# Created obs request include fixes bug numbers from MeeGo bugzilla&lt;br /&gt;
# Bugzilla items listed in changes are set as resolved&lt;br /&gt;
# Spec file matches [[Packaging/Guidelines|MeeGo packaging guidelines]]&lt;br /&gt;
# Rpmlint warnings are either fixed or explained by comments in the spec file. e.g. eat packages install files into root's home and the reasoning for it needs to be explained&lt;br /&gt;
# Host side tool packages use the same source tar ball to produce debian and rpm packages&lt;br /&gt;
&lt;br /&gt;
== Features and Bugs ==&lt;br /&gt;
Want to report an feature idea or bug to us? - [http://bugs.meego.com/enter_bug.cgi?product=MeeGo%20Quality%20Assurance Please do it here]&lt;br /&gt;
 &lt;br /&gt;
* [http://bugs.meego.com/buglist.cgi?query_format=advanced&amp;amp;order=Importance&amp;amp;bug_status=ASSIGNED&amp;amp;component=eat&amp;amp;component=min&amp;amp;component=ots&amp;amp;component=TDriver&amp;amp;component=testdefinition&amp;amp;component=Testplanner&amp;amp;component=testrunner%20UI&amp;amp;component=testrunner-lite&amp;amp;classification=MeeGo%20Projects&amp;amp;product=Meego%20Quality%20Assurance Assigned bugs and features - Working on it]&lt;br /&gt;
* [http://bugs.meego.com/buglist.cgi?query_format=advanced&amp;amp;order=Importance&amp;amp;bug_status=NEW&amp;amp;bug_status=NEEDINFO&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=WAITING%20FOR%20UPSTREAM&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;component=eat&amp;amp;component=min&amp;amp;component=ots&amp;amp;component=TDriver&amp;amp;component=testdefinition&amp;amp;component=Testplanner&amp;amp;component=testrunner%20UI&amp;amp;component=testrunner-lite&amp;amp;classification=MeeGo%20Projects&amp;amp;product=MeeGo%20Quality%20Assurance All open features and bugs in priority order]&lt;br /&gt;
&lt;br /&gt;
Bugzilla workflow: [[Bugzilla/how-report-bugs]]&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
This section will contain links to various guides and user documentation. See [[Quality/QA-tools#Tools_and_Maintainers|the wiki pages of the tools]] for tool-specific documentation.&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/Autotest-guide|Autotest-Guide]]&lt;br /&gt;
* [[Quality/QA-tools/How_to_set_up_repositories|How to set up the repositories that are needed to install QA tools]]&lt;br /&gt;
&lt;br /&gt;
== Design/ Planning ==&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/MCTS test automation design|MCTS Test Automation]] (QA Tools support for MCTS) '''WORK IN PROGRESS'''&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
&lt;br /&gt;
All meetings will be held in &amp;lt;code&amp;gt;#meego-meeting&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;irc.freenode.net&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Team meetings ===&lt;br /&gt;
&lt;br /&gt;
QA tools team meetings will be held on need basis for specific topics. This was agreed in [http://trac.tspre.org/meetbot/meego-meeting/2010/meego-meeting.2010-12-07-11.59.html the last weekly meeting held on December 7th 2010]&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/Meetings|Meeting agendas and minutes]]&lt;br /&gt;
&lt;br /&gt;
=== Architecture meetings ===&lt;br /&gt;
&lt;br /&gt;
Architecture meetings will be held on-demand basis i.e. when topics do not fit in QA-Tools weekly meeting time frame.&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/Arch-Meetings|Meeting agendas and minutes]]&lt;br /&gt;
&lt;br /&gt;
=== Workshops ===&lt;br /&gt;
&lt;br /&gt;
Face-2-face meetings within the team.&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/Workshops|Meeting agendas and minutes]]&lt;br /&gt;
&lt;br /&gt;
== Team Members and Collaboration Spaces==&lt;br /&gt;
&lt;br /&gt;
The current team members are (in no particular order):&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Role'''&lt;br /&gt;
| '''Affiliation'''&lt;br /&gt;
| '''IRC nickname'''&lt;br /&gt;
|- &lt;br /&gt;
| Ville Ilvonen || Team lead (act.) || Nokia || vilvo&lt;br /&gt;
|-&lt;br /&gt;
| Riku Halonen || Team member || Nokia || rikhalon&lt;br /&gt;
|-&lt;br /&gt;
| Kari Sievi || Team member || Digia || sievi&lt;br /&gt;
|-&lt;br /&gt;
| Timo Härkönen || Team member || Digia || timoph  &lt;br /&gt;
|-&lt;br /&gt;
| Carol Rus || Team member || Digia || carrus  &lt;br /&gt;
|-&lt;br /&gt;
| Sami Lahtinen || Team member || Digia || slahtinen  &lt;br /&gt;
|-&lt;br /&gt;
| Raimo Gratseff || Team member || Digia || rrraimo  &lt;br /&gt;
|-&lt;br /&gt;
| Kyösti Ranto || Team member || Digia || kyranto&lt;br /&gt;
|-&lt;br /&gt;
| Arto Sinnelä || Team member || Digia || asinnela&lt;br /&gt;
|-&lt;br /&gt;
| Joonas Kylänpää || Team member || Digia || Kaadlajk&lt;br /&gt;
|-&lt;br /&gt;
| Timo Mäkimattila || Team member || Digia || timakima&lt;br /&gt;
|-&lt;br /&gt;
| Elias Luttinen || Team member || Digia || eluttine&lt;br /&gt;
|-&lt;br /&gt;
| Ville Niutanen || Team member || Digia || Villen&lt;br /&gt;
|-&lt;br /&gt;
| Esa-Pekka Miettinen || Team member || Digia || E-P&lt;br /&gt;
|-&lt;br /&gt;
| Vesa Poikajärvi || Team member || Digia || vesse&lt;br /&gt;
|-  &lt;br /&gt;
| Alexey Kuznetsov || Team member || Digia || alkuznet&lt;br /&gt;
|-  &lt;br /&gt;
| Sergey Timofeev || Team member || Digia || setimofe&lt;br /&gt;
|-  &lt;br /&gt;
| Daniil Chuiko || Team member || Digia || dachuiko&lt;br /&gt;
|-&lt;br /&gt;
| Sampo Saaristo || Team member || Sofica || sampos&lt;br /&gt;
|-  &lt;br /&gt;
| Ling Yu || Team member || Intel || -&lt;br /&gt;
|-&lt;br /&gt;
| Jing Wang || Team member || Intel || -&lt;br /&gt;
|-  &lt;br /&gt;
| Teemu Vainio || Team member || Ixonos || tvainio&lt;br /&gt;
|-  &lt;br /&gt;
| Tuomo Mäkinen || Team member || Ixonos || -&lt;br /&gt;
|-  &lt;br /&gt;
| Jouni Leppäkases || Team member || Ixonos || jouni&lt;br /&gt;
|-  &lt;br /&gt;
| Tom Galvin || Team member || Ixonos || -&lt;br /&gt;
|-&lt;br /&gt;
| Jarno Keskikangas || Team member || Leonidas || jakeskik&lt;br /&gt;
|- &lt;br /&gt;
| Janne Hietamäki || Team member || Leonidas || _janne&lt;br /&gt;
|- &lt;br /&gt;
| Sami Hangaslammi || Team member || Leonidas || sahangas&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Team communication is in English. Our collaboration spaces are:&lt;br /&gt;
* [http://lists.meego.com/listinfo/meego-qa meego-qa@lists.meego.com mailing list]&lt;br /&gt;
* [http://lists.meego.com/listinfo/meego-dev meego-dev@meego.com mailing list], please prefix with 'QA-tools' for team related topics.&lt;br /&gt;
** Please also poke team members or Ville Ilvonen either by email or on IRC because of high traffic @ meego-dev&lt;br /&gt;
* [http://webchat.freenode.net/?channels=meego-qa-tools #meego-qa-tools IRC channel on irc.freenode.net]&lt;br /&gt;
** [http://timoph.fi/qa-tools-stats/ #meego-qa-tools statistics]&lt;br /&gt;
** [http://timoph.fi/qa-tools-logs/ #meego-qa-tools irc logs]&lt;br /&gt;
* Gitorious team, http://meego.gitorious.org/meego-quality-assurance/&lt;br /&gt;
* [http://www.youtube.com/user/meegoqatools Youtube channel for demo videos]&lt;br /&gt;
* [http://meegoqatools.wordpress.com/ QA-tools team blog]&lt;br /&gt;
* MeeGo OBS - devel:quality&lt;br /&gt;
* This wiki area&lt;br /&gt;
* [[Quality/QA-tools/ServiceOS|ServiceOS]]&lt;br /&gt;
* [[Quality/QA-tools/PXEInstall|PXEInstallation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:QA]]&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment</id>
		<title>Quality/QA-tools/QAReports/Setting up the development environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment"/>
				<updated>2011-01-04T07:24:17Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
QA Reports is a Ruby on Rails application so you need to install a bunch of stuff to get it up and running. This draft documentation is based on experiences in installation on Ubuntu 10.10&lt;br /&gt;
&lt;br /&gt;
==Installing Ruby==&lt;br /&gt;
&lt;br /&gt;
Most likely you won't succeed with the packaged version of Ruby. Thus this guide uses [http://rvm.beginrescueend.com/ Ruby Version Manager (rvm)].&lt;br /&gt;
&lt;br /&gt;
# Install dependencies: &amp;lt;tt&amp;gt;$ sudo apt-get install git-core curl&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install rvm: &amp;lt;tt&amp;gt;$ bash &amp;lt; &amp;lt;( curl http://rvm.beginrescueend.com/releases/rvm-install-head )&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Follow the instructions printed once installation is ready&lt;br /&gt;
## Install needed packages - check section ''&amp;quot;For Ruby (MRI &amp;amp; ree)  you should install the following OS dependencies&amp;quot;''&lt;br /&gt;
## Enable loading of rvm - check section ''&amp;quot;You must now complete the install by loading RVM in new shells&amp;quot;''&lt;br /&gt;
### Edit &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; as described&lt;br /&gt;
### Restart your shell to have rvm enabled&lt;br /&gt;
# Install Ruby: &amp;lt;tt&amp;gt;$ rvm install 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Set into use: &amp;lt;tt&amp;gt;$ rvm use 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set up QA Reports==&lt;br /&gt;
&lt;br /&gt;
# Clone qa-reports from git: &amp;lt;tt&amp;gt;$ git clone git://gitorious.org/meego-quality-assurance/qa-reports.git&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install preqrequisites: &amp;lt;tt&amp;gt;$ sudo apt-get install libmysqlclient-dev&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Create database config to &amp;lt;tt&amp;gt;qa-reports/config/database.yml&amp;lt;/tt&amp;gt; (example exists by name &amp;lt;tt&amp;gt;database.example.yml&amp;lt;/tt&amp;gt;)&lt;br /&gt;
# Check &amp;lt;tt&amp;gt;qa-reports/Gemfile&amp;lt;/tt&amp;gt;&lt;br /&gt;
## If there's a line &amp;lt;tt&amp;gt;gem 'rack', :git =&amp;gt; &amp;quot;git://github.com/rack/rack.git&amp;quot;&amp;lt;/tt&amp;gt;, change it to &amp;lt;tt&amp;gt;gem 'rack', '1.2.1'&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Apparently the dependencies are not installed with the git approach which will lead into server starting failure&lt;br /&gt;
&lt;br /&gt;
Follow the instructions then from &amp;lt;tt&amp;gt;qa-reports/README.creole&amp;lt;/tt&amp;gt;:&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem update --system&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Note: if you get an error about &amp;lt;tt&amp;gt;zlib&amp;lt;/tt&amp;gt;, follow [http://rvm.beginrescueend.com/packages/zlib/ these] instructions&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem install bundler --no-ri --no-rdoc&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ bundle install --without staging production&amp;lt;/tt&amp;gt;&lt;br /&gt;
## If you had to edit the Gemfile, you can now change it back the way it was and run the &amp;lt;tt&amp;gt;bundle&amp;lt;/tt&amp;gt; command again to make it use the version in git (if that's needed)&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:create&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:migrate&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Failed, but after rerun worked&lt;br /&gt;
# Start the server: &amp;lt;tt&amp;gt;$ rails server&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment</id>
		<title>Quality/QA-tools/QAReports/Setting up the development environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment"/>
				<updated>2011-01-04T07:23:56Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
QA Reports is a Ruby on Rails application so you need to install a bunch of stuff to get it up and running. This draft documentation is based on experiences in installation on Ubuntu 10.10&lt;br /&gt;
&lt;br /&gt;
==Installing Ruby==&lt;br /&gt;
&lt;br /&gt;
Most likely you won't succeed with the packaged version of Ruby. Thus this guide uses [http://rvm.beginrescueend.com/ Ruby Version Manager (rvm)].&lt;br /&gt;
&lt;br /&gt;
# Install dependencies: &amp;lt;tt&amp;gt;$ sudo apt-get install git-core curl&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install rvm: &amp;lt;tt&amp;gt;$ bash &amp;lt; &amp;lt;( curl http://rvm.beginrescueend.com/releases/rvm-install-head )&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Follow the instructions printed once installation is ready&lt;br /&gt;
## Install needed packages - check section ''&amp;quot;For Ruby (MRI &amp;amp; ree)  you should install the following OS dependencies&amp;quot;''&lt;br /&gt;
## Enable loading of rvm - check section ''&amp;quot;You must now complete the install by loading RVM in new shells&amp;quot;''&lt;br /&gt;
### Edit &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; as described&lt;br /&gt;
### Restart your shell to have rvm enabled&lt;br /&gt;
# Install Ruby: &amp;lt;tt&amp;gt;$ rvm install 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Set into use: &amp;lt;tt&amp;gt;$ rvm use 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set up QA Reports==&lt;br /&gt;
&lt;br /&gt;
# Clone qa-reports from git: &amp;lt;tt&amp;gt;$ git clone git://gitorious.org/meego-quality-assurance/qa-reports.git&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install preqrequisites: &amp;lt;tt&amp;gt;$ sudo apt-get install libmysqlclient-dev&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Create database config to &amp;lt;tt&amp;gt;qa-reports/config/database.yml&amp;lt;/tt&amp;gt; (example exists by name &amp;lt;tt&amp;gt;database.example.yml&amp;lt;/tt&amp;gt;)&lt;br /&gt;
# Check &amp;lt;tt&amp;gt;qa-reports/Gemfile&amp;lt;/tt&amp;gt;&lt;br /&gt;
## If there's a line &amp;lt;tt&amp;gt;gem 'rack', :git =&amp;gt; &amp;quot;git://github.com/rack/rack.git&amp;quot;&amp;lt;/tt&amp;gt;, change it to &amp;lt;tt&amp;gt;gem 'rack', '1.2.1'&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Apparently the dependencies are not installed with the git approach which will lead into server starting failure&lt;br /&gt;
&lt;br /&gt;
Follow the instructions then from &amp;lt;tt&amp;gt;qa-reports/README.creole&amp;lt;/tt&amp;gt;:&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem update --system&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Note: if you get an error about &amp;lt;tt&amp;gt;zlib&amp;lt;/tt&amp;gt;, follow [http://rvm.beginrescueend.com/packages/zlib/ these] instructions&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem install bundler --no-ri --no-rdoc&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ bundle install --without staging production&amp;lt;/tt&amp;gt;&lt;br /&gt;
## If you had to edit the Gemfile, you can now change it back the way it was and run the &amp;lt;tt&amp;gt;bundle&amp;lt;/tt&amp;gt; command again to make it use the version in git (if that's needed)&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:create&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:migrate&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Failed, but after rerun worked&lt;br /&gt;
# Start the server: &amp;lt;tt&amp;gt;$ rails server&amp;lt;/tt&amp;gt;&lt;br /&gt;
## And see it fail due to problems with &amp;lt;tt&amp;gt;RubyGem rack&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment</id>
		<title>Quality/QA-tools/QAReports/Setting up the development environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment"/>
				<updated>2011-01-04T06:52:14Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
QA Reports is a Ruby on Rails application so you need to install a bunch of stuff to get it up and running. This draft documentation is based on experiences in installation on Ubuntu 10.10&lt;br /&gt;
&lt;br /&gt;
==Installing Ruby==&lt;br /&gt;
&lt;br /&gt;
Most likely you won't succeed with the packaged version of Ruby. Thus this guide uses [http://rvm.beginrescueend.com/ Ruby Version Manager (rvm)].&lt;br /&gt;
&lt;br /&gt;
# Install dependencies: &amp;lt;tt&amp;gt;$ sudo apt-get install git-core curl&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install rvm: &amp;lt;tt&amp;gt;$ bash &amp;lt; &amp;lt;( curl http://rvm.beginrescueend.com/releases/rvm-install-head )&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Follow the instructions printed once installation is ready&lt;br /&gt;
## Install needed packages - check section ''&amp;quot;For Ruby (MRI &amp;amp; ree)  you should install the following OS dependencies&amp;quot;''&lt;br /&gt;
## Enable loading of rvm - check section ''&amp;quot;You must now complete the install by loading RVM in new shells&amp;quot;''&lt;br /&gt;
### Edit &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; as described&lt;br /&gt;
### Restart your shell to have rvm enabled&lt;br /&gt;
# Install Ruby: &amp;lt;tt&amp;gt;$ rvm install 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Set into use: &amp;lt;tt&amp;gt;$ rvm use 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set up QA Reports==&lt;br /&gt;
&lt;br /&gt;
# Clone qa-reports from git: &amp;lt;tt&amp;gt;$ git clone git://gitorious.org/meego-quality-assurance/qa-reports.git&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install preqrequisites: &amp;lt;tt&amp;gt;$ sudo apt-get install libmysqlclient-dev&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Create database config to &amp;lt;tt&amp;gt;qa-reports/config/database.yml&amp;lt;/tt&amp;gt; (example exists by name &amp;lt;tt&amp;gt;database.example.yml&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Follow the instructions then from &amp;lt;tt&amp;gt;qa-reports/README.creole&amp;lt;/tt&amp;gt;:&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem update --system&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Note: if you get an error about &amp;lt;tt&amp;gt;zlib&amp;lt;/tt&amp;gt;, follow [http://rvm.beginrescueend.com/packages/zlib/ these] instructions&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem install bundler --no-ri --no-rdoc&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ bundle install --without staging production&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:create&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:migrate&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Failed, but after rerun worked&lt;br /&gt;
# Start the server: &amp;lt;tt&amp;gt;$ rails server&amp;lt;/tt&amp;gt;&lt;br /&gt;
## And see it fail due to problems with &amp;lt;tt&amp;gt;RubyGem rack&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''TODO:''' Fix the gem &amp;quot;rack&amp;quot; issue. Currently during bundling output like this is produced:&lt;br /&gt;
  Using rack (1.2.1) from git://github.com/rack/rack.git (at master) &lt;br /&gt;
  rack at /home/poikajar/.rvm/gems/ruby-1.8.7-p330/bundler/gems/rack-672396f0fdaa did not have a valid gemspec.&lt;br /&gt;
  This prevents bundler from installing bins or native extensions, but that may not affect its   functionality.&lt;br /&gt;
  The validation message from Rubygems was:&lt;br /&gt;
    [&amp;quot;SPEC&amp;quot;] are not files&lt;br /&gt;
&lt;br /&gt;
The above seems to be related to this [https://github.com/rack/rack/pull/73 issue] which should've been solved. If editing rubygems manually from that path bundler does not complain but still the result is the same when trying to start the server.&lt;br /&gt;
&lt;br /&gt;
And when trying to start the server the output is:&lt;br /&gt;
  /home/poikajar/.rvm/rubies/ruby-1.8.7-p330/lib/ruby/site_ruby/1.8/rubygems.rb:812:in `report_activate_error': &lt;br /&gt;
  Could not find RubyGem rack (~&amp;gt; 1.2.1) (Gem::LoadError)&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment</id>
		<title>Quality/QA-tools/QAReports/Setting up the development environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment"/>
				<updated>2010-12-31T10:39:55Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Set up QA Reports */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
QA Reports is a Ruby on Rails application so you need to install a bunch of stuff to get it up and running. This draft documentation is based on experiences in installation on Ubuntu 10.10&lt;br /&gt;
&lt;br /&gt;
==Installing Ruby==&lt;br /&gt;
&lt;br /&gt;
Most likely you won't succeed with the packaged version of Ruby. Thus this guide uses [http://rvm.beginrescueend.com/ Ruby Version Manager (rvm)].&lt;br /&gt;
&lt;br /&gt;
# Install dependencies: &amp;lt;tt&amp;gt;$ sudo apt-get install git-core curl&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install rvm: &amp;lt;tt&amp;gt;$ bash &amp;lt; &amp;lt;( curl http://rvm.beginrescueend.com/releases/rvm-install-head )&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Follow the instructions printed once installation is ready&lt;br /&gt;
## Install needed packages - check section ''&amp;quot;For Ruby (MRI &amp;amp; ree)  you should install the following OS dependencies&amp;quot;''&lt;br /&gt;
## Enable loading of rvm - check section ''&amp;quot;You must now complete the install by loading RVM in new shells&amp;quot;''&lt;br /&gt;
### Edit &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; as described&lt;br /&gt;
### Restart your shell to have rvm enabled&lt;br /&gt;
# Install Ruby: &amp;lt;tt&amp;gt;$ rvm install 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Set into use: &amp;lt;tt&amp;gt;$ rvm use 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set up QA Reports==&lt;br /&gt;
&lt;br /&gt;
# Clone qa-reports from git: &amp;lt;tt&amp;gt;$ git clone git://gitorious.org/meego-quality-assurance/qa-reports.git&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install preqrequisites: &amp;lt;tt&amp;gt;$ sudo apt-get install libmysqlclient-dev&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Create database config to &amp;lt;tt&amp;gt;qa-reports/config/database.yml&amp;lt;/tt&amp;gt; (example exists by name &amp;lt;tt&amp;gt;database.example.yml&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Follow the instructions then from &amp;lt;tt&amp;gt;qa-reports/README.creole&amp;lt;/tt&amp;gt;:&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem update --system&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Note: if you get an error about &amp;lt;tt&amp;gt;zlib&amp;lt;/tt&amp;gt;, follow [http://rvm.beginrescueend.com/packages/zlib/ these] instructions&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem install bundler --no-ri --no-rdoc&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ bundle install --without staging production&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:create&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:migrate&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Failed, but after rerun worked&lt;br /&gt;
# Start the server: &amp;lt;tt&amp;gt;$ rails server&amp;lt;/tt&amp;gt;&lt;br /&gt;
## And see it fail due to problems with &amp;lt;tt&amp;gt;RubyGem rack&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''TODO:''' Fix the gem &amp;quot;rack&amp;quot; issue. Currently during bundling output like this is produced:&lt;br /&gt;
  Using rack (1.2.1) from git://github.com/rack/rack.git (at master) &lt;br /&gt;
  rack at /home/poikajar/.rvm/gems/ruby-1.8.7-p330/bundler/gems/rack-672396f0fdaa did not have a valid gemspec.&lt;br /&gt;
  This prevents bundler from installing bins or native extensions, but that may not affect its   functionality.&lt;br /&gt;
  The validation message from Rubygems was:&lt;br /&gt;
    [&amp;quot;SPEC&amp;quot;] are not files&lt;br /&gt;
&lt;br /&gt;
And when trying to start the server the output is:&lt;br /&gt;
  /home/poikajar/.rvm/rubies/ruby-1.8.7-p330/lib/ruby/site_ruby/1.8/rubygems.rb:812:in `report_activate_error': &lt;br /&gt;
  Could not find RubyGem rack (~&amp;gt; 1.2.1) (Gem::LoadError)&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment</id>
		<title>Quality/QA-tools/QAReports/Setting up the development environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment"/>
				<updated>2010-12-31T10:00:05Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Set up QA Reports */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
QA Reports is a Ruby on Rails application so you need to install a bunch of stuff to get it up and running. This draft documentation is based on experiences in installation on Ubuntu 10.10&lt;br /&gt;
&lt;br /&gt;
==Installing Ruby==&lt;br /&gt;
&lt;br /&gt;
Most likely you won't succeed with the packaged version of Ruby. Thus this guide uses [http://rvm.beginrescueend.com/ Ruby Version Manager (rvm)].&lt;br /&gt;
&lt;br /&gt;
# Install dependencies: &amp;lt;tt&amp;gt;$ sudo apt-get install git-core curl&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install rvm: &amp;lt;tt&amp;gt;$ bash &amp;lt; &amp;lt;( curl http://rvm.beginrescueend.com/releases/rvm-install-head )&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Follow the instructions printed once installation is ready&lt;br /&gt;
## Install needed packages - check section ''&amp;quot;For Ruby (MRI &amp;amp; ree)  you should install the following OS dependencies&amp;quot;''&lt;br /&gt;
## Enable loading of rvm - check section ''&amp;quot;You must now complete the install by loading RVM in new shells&amp;quot;''&lt;br /&gt;
### Edit &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; as described&lt;br /&gt;
### Restart your shell to have rvm enabled&lt;br /&gt;
# Install Ruby: &amp;lt;tt&amp;gt;$ rvm install 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Set into use: &amp;lt;tt&amp;gt;$ rvm use 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set up QA Reports==&lt;br /&gt;
&lt;br /&gt;
# Clone qa-reports from git: &amp;lt;tt&amp;gt;$ git clone git://gitorious.org/meego-quality-assurance/qa-reports.git&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install preqrequisites: &amp;lt;tt&amp;gt;$ sudo apt-get install libmysqlclient-dev&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Create database config to &amp;lt;tt&amp;gt;qa-reports/config/database.yml&amp;lt;/tt&amp;gt; (example exists by name &amp;lt;tt&amp;gt;database.example.yml&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Follow the instructions then from &amp;lt;tt&amp;gt;qa-reports/README.creole&amp;lt;/tt&amp;gt;:&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem update --system&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Note: if you get an error about &amp;lt;tt&amp;gt;zlib&amp;lt;/tt&amp;gt;, follow [http://rvm.beginrescueend.com/packages/zlib/ these] instructions&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem install bundler --no-ri --no-rdoc&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ bundle install --without staging production&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:create&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:migrate&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Failed, but after rerun worked&lt;br /&gt;
# Start the server: &amp;lt;tt&amp;gt;$ rails server&amp;lt;/tt&amp;gt;&lt;br /&gt;
## And see it fail due to problems with &amp;lt;tt&amp;gt;RubyGem rack&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''TODO:''' Fix the gem &amp;quot;rack&amp;quot; issue. Currently during bundling output like this is produced:&lt;br /&gt;
  Using rack (1.2.1) from git://github.com/rack/rack.git (at master) &lt;br /&gt;
  rack at /home/poikajar/.rvm/gems/ruby-1.8.7-p330/bundler/gems/rack-672396f0fdaa did not have a valid gemspec.                                                   &lt;br /&gt;
  This prevents bundler from installing bins or native extensions, but that may not affect its   functionality.                                                 &lt;br /&gt;
  The validation message from Rubygems was:&lt;br /&gt;
    [&amp;quot;SPEC&amp;quot;] are not files&lt;br /&gt;
&lt;br /&gt;
And when trying to start the server the output is:&lt;br /&gt;
  /home/poikajar/.rvm/rubies/ruby-1.8.7-p330/lib/ruby/site_ruby/1.8/rubygems.rb:812:in `report_activate_error': &lt;br /&gt;
  Could not find RubyGem rack (~&amp;gt; 1.2.1) (Gem::LoadError)&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment</id>
		<title>Quality/QA-tools/QAReports/Setting up the development environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment"/>
				<updated>2010-12-31T09:52:08Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Set up QA Reports */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
QA Reports is a Ruby on Rails application so you need to install a bunch of stuff to get it up and running. This draft documentation is based on experiences in installation on Ubuntu 10.10&lt;br /&gt;
&lt;br /&gt;
==Installing Ruby==&lt;br /&gt;
&lt;br /&gt;
Most likely you won't succeed with the packaged version of Ruby. Thus this guide uses [http://rvm.beginrescueend.com/ Ruby Version Manager (rvm)].&lt;br /&gt;
&lt;br /&gt;
# Install dependencies: &amp;lt;tt&amp;gt;$ sudo apt-get install git-core curl&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install rvm: &amp;lt;tt&amp;gt;$ bash &amp;lt; &amp;lt;( curl http://rvm.beginrescueend.com/releases/rvm-install-head )&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Follow the instructions printed once installation is ready&lt;br /&gt;
## Install needed packages - check section ''&amp;quot;For Ruby (MRI &amp;amp; ree)  you should install the following OS dependencies&amp;quot;''&lt;br /&gt;
## Enable loading of rvm - check section ''&amp;quot;You must now complete the install by loading RVM in new shells&amp;quot;''&lt;br /&gt;
### Edit &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; as described&lt;br /&gt;
### Restart your shell to have rvm enabled&lt;br /&gt;
# Install Ruby: &amp;lt;tt&amp;gt;$ rvm install 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Set into use: &amp;lt;tt&amp;gt;$ rvm use 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set up QA Reports==&lt;br /&gt;
&lt;br /&gt;
# Clone qa-reports from git: &amp;lt;tt&amp;gt;$ git clone git://gitorious.org/meego-quality-assurance/qa-reports.git&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install preqrequisites: &amp;lt;tt&amp;gt;$ sudo apt-get install libmysqlclient-dev&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Create database config to &amp;lt;tt&amp;gt;qa-reports/config/database.yml&amp;lt;/tt&amp;gt; (example exists by name &amp;lt;tt&amp;gt;database.example.yml&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Follow the instructions then from &amp;lt;tt&amp;gt;qa-reports/README.creole&amp;lt;/tt&amp;gt;:&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem update --system&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Note: if you get an error about &amp;lt;tt&amp;gt;zlib&amp;lt;/tt&amp;gt;, follow [http://rvm.beginrescueend.com/packages/zlib/ these] instructions&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem install bundler --no-ri --no-rdoc&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ bundle install --without staging production&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:create&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:migrate&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Failed, but after rerun worked&lt;br /&gt;
# Start the server: &amp;lt;tt&amp;gt;$ rails server&amp;lt;/tt&amp;gt;&lt;br /&gt;
## And see it fail due to problems with &amp;lt;tt&amp;gt;RubyGem rack&amp;lt;/tt&amp;gt;. TODO: fix this&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment</id>
		<title>Quality/QA-tools/QAReports/Setting up the development environment</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/QAReports/Setting_up_the_development_environment"/>
				<updated>2010-12-31T09:51:39Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: Created page with &amp;quot;==Introduction==  QA Reports is a Ruby on Rails application so you need to install a bunch of stuff to get it up and running. This draft documentation is based on experiences in …&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
QA Reports is a Ruby on Rails application so you need to install a bunch of stuff to get it up and running. This draft documentation is based on experiences in installation on Ubuntu 10.10&lt;br /&gt;
&lt;br /&gt;
==Installing Ruby==&lt;br /&gt;
&lt;br /&gt;
Most likely you won't succeed with the packaged version of Ruby. Thus this guide uses [http://rvm.beginrescueend.com/ Ruby Version Manager (rvm)].&lt;br /&gt;
&lt;br /&gt;
# Install dependencies: &amp;lt;tt&amp;gt;$ sudo apt-get install git-core curl&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install rvm: &amp;lt;tt&amp;gt;$ bash &amp;lt; &amp;lt;( curl http://rvm.beginrescueend.com/releases/rvm-install-head )&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Follow the instructions printed once installation is ready&lt;br /&gt;
## Install needed packages - check section ''&amp;quot;For Ruby (MRI &amp;amp; ree)  you should install the following OS dependencies&amp;quot;''&lt;br /&gt;
## Enable loading of rvm - check section ''&amp;quot;You must now complete the install by loading RVM in new shells&amp;quot;''&lt;br /&gt;
### Edit &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; as described&lt;br /&gt;
### Restart your shell to have rvm enabled&lt;br /&gt;
# Install Ruby: &amp;lt;tt&amp;gt;$ rvm install 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Set into use: &amp;lt;tt&amp;gt;$ rvm use 1.8.7&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set up QA Reports==&lt;br /&gt;
&lt;br /&gt;
# Clone qa-reports from git: &amp;lt;tt&amp;gt;$ git clone git://gitorious.org/meego-quality-assurance/qa-reports.git&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Install preqrequisites: &amp;lt;tt&amp;gt;$ sudo apt-get install libmysqlclient-dev&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Create database config to &amp;lt;tt&amp;gt;qa-reports/config/database.yml&amp;lt;/tt&amp;gt; (example exists by name &amp;lt;tt&amp;gt;database.example.yml&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Follow the instructions then from &amp;lt;tt&amp;gt;qa-reports/README.creole&amp;lt;/tt&amp;gt;:&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem update --system&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Note: if you get an error about &amp;lt;tt&amp;gt;zlib&amp;lt;/tt&amp;gt;, follow [http://rvm.beginrescueend.com/packages/zlib/ these] instructions&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ gem install bundler --no-ri --no-rdoc&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:create&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ rake db:migrate&amp;lt;/tt&amp;gt;&lt;br /&gt;
## Failed, but after rerun worked&lt;br /&gt;
# Start the server: &amp;lt;tt&amp;gt;$ rails server&amp;lt;/tt&amp;gt;&lt;br /&gt;
## And see it fail due to problems with &amp;lt;tt&amp;gt;RubyGem rack&amp;lt;/tt&amp;gt;. TODO: fix this&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ bundle install --without staging production&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/Scripts_and_utils</id>
		<title>Quality/QA-tools/Scripts and utils</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/Scripts_and_utils"/>
				<updated>2010-12-17T04:46:01Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: Added tests2html documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Scripts and utils =&lt;br /&gt;
&lt;br /&gt;
== mtdv ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
''MIN Test Definition Validator''&lt;br /&gt;
&lt;br /&gt;
Simple tool for validating test definition test case names with regular expression and also for checking that test definition includes all test cases which are defined in the MIN scripter files.&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
Validate tests.xml file(s)&lt;br /&gt;
  &lt;br /&gt;
 mtdv -s /usr/share/test-definition/testdefinition-syntax.xsd -x tests.xml -x tests2.xml&lt;br /&gt;
  &lt;br /&gt;
Validate only tests.xml test case name(s)&lt;br /&gt;
  &lt;br /&gt;
 mtdv -r &amp;quot;[S]&amp;quot; -x tests.xml -x tests2.xml&lt;br /&gt;
  &lt;br /&gt;
Validate MIN script test case name(s)&lt;br /&gt;
  &lt;br /&gt;
 mtdv -r &amp;quot;[S]&amp;quot; -m /usr/lib/min/&lt;br /&gt;
  &lt;br /&gt;
Compare test tests.xml case list to MIN test case list and validate all test cases&lt;br /&gt;
  &lt;br /&gt;
 mtdv -s /usr/share/test-definition/testdefinition-syntax.xsd -x tests.xml -m /usr/lib/min/ -r &amp;quot;[S]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== tests2html ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
Tool for generating HTML documentation from test plans validating against [[Quality/QA-tools/Test-definition|test-definition]]. The tool pulls projects from gitorious, locates test XML files and creates the HTML documentation. Currently used at http://testplans.meego.com&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
Tool configuration is in &amp;lt;tt&amp;gt;/etc/tests2html/tests2html.ini&amp;lt;/tt&amp;gt; where you define the git projects and a couple of other settings. The projects are cloned under &amp;lt;tt&amp;gt;/var/tmp/tests2html&amp;lt;/tt&amp;gt;. The main idea is to run with cron, and the cron script is &amp;lt;tt&amp;gt;/etc/cron.hourly/tests2html&amp;lt;/tt&amp;gt;. You need to enable that after you've configured the tool. Logger prints messages to stdout.&lt;br /&gt;
&lt;br /&gt;
When running from command line you have the following command line options available:&lt;br /&gt;
 -h, --help        Display the help&lt;br /&gt;
 -v, --verbose     Set log level to DEBUG&lt;br /&gt;
 -o, --offline     Don't do anything with git. You need to run once &lt;br /&gt;
                   without this flag to get the projects, but after &lt;br /&gt;
                   that using offline mode makes debugging easier&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/Autotest-guide</id>
		<title>Quality/QA-tools/Autotest-guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/Autotest-guide"/>
				<updated>2010-11-19T10:15:49Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Creating test images */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
This guide gives a walk through of the steps needed to automate testing in MeeGo. The guide is updated when automated testing solutions are updated or new parts for the system are taken into use so make sure to check the guide for updates every now and then.&lt;br /&gt;
&lt;br /&gt;
The current automated testing solution offers two different ways to execute the tests, from host pc through ssh or on the device under test itself. OTS uses host based testing to execute the tests. On device testing is meant to be used with manual testing and in special cases where host based testing is not an feasible option.&lt;br /&gt;
&lt;br /&gt;
For information about the tools used with test automation see [[Quality/QA-tools#Tools and Maintainers|QA-tools and maintainers]].&lt;br /&gt;
&lt;br /&gt;
== Feedback ==&lt;br /&gt;
Feel free to contribute and improve this guide. For questions and/or feedback about it pop by #meego-qa-tools at freenode or use [http://lists.meego.com/listinfo/meego-qa meego-qa mailing list].&lt;br /&gt;
&lt;br /&gt;
= Writing tests =&lt;br /&gt;
&lt;br /&gt;
== Test plan ==&lt;br /&gt;
Test plan is a XML file that contains your test suites, cases and steps. The basic principle of test plan XML and tool support is that you can use 'any' executable for testing.&lt;br /&gt;
&lt;br /&gt;
For more information on writing test plan XMLs see [[Quality/QA-tools/Test plan|Test plan]] page in this wiki.&lt;br /&gt;
&lt;br /&gt;
== Test packaging ==&lt;br /&gt;
&lt;br /&gt;
Test packaging is intended to provide flexible and consistent ways to run tests and get results. You may select testing tools of your choice.&lt;br /&gt;
&lt;br /&gt;
Test packaging is set of simple rules to wrap tests with test plan inside rpm package. Tool support for validating test plan and automating test plan execution is provided with testrunner. Following describes rpm-version of test packaging.&lt;br /&gt;
&lt;br /&gt;
A source package with test cases must:&lt;br /&gt;
&lt;br /&gt;
* build binary rpm package with name which ends with &amp;quot;&amp;lt;code&amp;gt;-tests&amp;lt;/code&amp;gt;&amp;quot; (this is a test package)&lt;br /&gt;
&lt;br /&gt;
A test package must:&lt;br /&gt;
&lt;br /&gt;
* contain all tests, scripts and configuration files required to run tests&lt;br /&gt;
* define dependencies - the ones it tests and the test tools it depends on (if any)&lt;br /&gt;
* contain a test plan located at &amp;lt;code&amp;gt;/usr/share/&amp;lt;packagename&amp;gt;-tests/tests.xml&amp;lt;/code&amp;gt; [1]&lt;br /&gt;
&lt;br /&gt;
For more information on creating test packages, see [[Quality/QA-tools/Test package|Test package]] page in this wiki.&lt;br /&gt;
&lt;br /&gt;
= Creating test images =&lt;br /&gt;
To perform automated testing you need to [[Image Creation|create images]] that contain test automation enablers and the tests. You can create two types of test images depending on how tests are planned to be executed. Instructions for image creation are [[Image Creation|here]] and the beginner instructions are [[Image Creation For Beginners|here]].&lt;br /&gt;
&lt;br /&gt;
For reference kickstart files for test images, see: http://gitorious.org/qa-tools/eat/commits/ks&lt;br /&gt;
&lt;br /&gt;
== Images for host based testing ==&lt;br /&gt;
For host based testing the image needs to have the eat-device package installed and optionally eat-syslog-device in it. In addition to these configuration packages you need in to install test packages to the image since OTS fetches the tests from the image.&lt;br /&gt;
&lt;br /&gt;
== Images for on device testing ==&lt;br /&gt;
For on device testing install eat-selftest package along with your test packages to the image. This package finds and executes all tests found in the image automatically after boot and writes test results to $HOME/testresults. The tests are executed as the user meego.&lt;br /&gt;
&lt;br /&gt;
If you don't want the tests to be executed automatically and handle test execution yourself install testrunner-lite package to the image along with your tests. In this case the test execution is started like this&lt;br /&gt;
&lt;br /&gt;
 testrunner-lite -f /path/to/tests.xml -v -o /path/to/results.xml&lt;br /&gt;
&lt;br /&gt;
== Automating image creation ==&lt;br /&gt;
Solution for automated image creation is not yet available.&lt;br /&gt;
&lt;br /&gt;
One option is to use crontab and mic-image-creator.&lt;br /&gt;
&lt;br /&gt;
= Running tests =&lt;br /&gt;
Automated test execution in MeeGo can be done by using generic test execution tool called testrunner-lite. Testrunner-lite reads planned tests from test plan xml file which is validated against test-definition schema. The tool can be run on the device under test or from a test control pc.&lt;br /&gt;
&lt;br /&gt;
To enable automatically setting up the test environment we have created `eat` (Enable(s) Automated Testing) package. Eat package splits into different sub-packages listed below:&lt;br /&gt;
&lt;br /&gt;
* eat-device - Configures the device under test for host based testing&lt;br /&gt;
* eat-selftest - Configures the device run tests automatically on boot&lt;br /&gt;
* eat-host - Configures test control pc for host based testing&lt;br /&gt;
* eat-syslog-device - Configures device's syslog to be sent to the host machince&lt;br /&gt;
* eat-syslog-host - Configures host's syslog to receive syslogs from the device under test&lt;br /&gt;
&lt;br /&gt;
== Automatically running test packages on image ==&lt;br /&gt;
Tests can be run automatically on a MeeGo image by adding package eat-selftest to the image.&lt;br /&gt;
&lt;br /&gt;
eat-selftest package pulls testrunner-lite and test-definition as dependencies to the image. The package itself installs an init script that finds all installed test packages and calls testrunner-lite to execute them. Test packages need to be installed in /usr/share/&amp;lt;packagename&amp;gt;-tests/tests.xml, otherwise the script doesn't find them.&lt;br /&gt;
&lt;br /&gt;
Results from the test and logs from the test runs are written to $HOME/testresults whese $HOME is the path to the user's home who is executing the tests.&lt;br /&gt;
&lt;br /&gt;
== Running test from test control pc ==&lt;br /&gt;
If testing is performed by [[Quality/QA-tools/OTS|OTS]] the test packages are fetched from the device and you don't need to manually start the test execution. To manually start test execution from the test control pc (host machine) you need to have the test plan xml files available on the host. To start executing tests in the device under test you need to tell testrunner-lite the device's IP address. For example&lt;br /&gt;
&lt;br /&gt;
 testrunner-lite -f tests.xml -v -o results.xml -t root@192.168.2.15&lt;br /&gt;
&lt;br /&gt;
= Setting up test automation environment =&lt;br /&gt;
This chapter describes how to set up you own test automation environment. The environment includes host machine configuration, setting up OTS server and configuring the device under test.&lt;br /&gt;
&lt;br /&gt;
== Setting up the host machine ==&lt;br /&gt;
RPM packages produced by [[Build Infrastructure|obs]] are only tested to work with MeeGo and Fedora 13. If you're using Ubuntu as your host see the Ubuntu 10.04 subsection.&lt;br /&gt;
&lt;br /&gt;
Install the package eat-host to you host machine. This package will install ssh-keys needed for passwordless authentication and testrunner-lite and test-definition as dependencies. If you need also to receive syslogs from the device under test, also install the eat-syslog-host/device packages.&lt;br /&gt;
&lt;br /&gt;
After installing you need to configure the host machine to use usb networking with the device under test. With Fedora you can do this by right-clicking the network managet icon and selecting edit connections. Edit the &amp;quot;Auto usb0&amp;quot; -connections IPv4 Settings and set Method to Manual and define the following Address to it:&lt;br /&gt;
&lt;br /&gt;
 Address: 192.168.2.14&lt;br /&gt;
 Netmask: 255.255.255.0&lt;br /&gt;
 Gateway: 0.0.0.0&lt;br /&gt;
&lt;br /&gt;
or if you don't use network manager to manage your networking do the following&lt;br /&gt;
&lt;br /&gt;
 # ifconfig usb0 192.168.2.14 up&lt;br /&gt;
&lt;br /&gt;
After this your host machine should be ready to act as a test control pc. Have fun testing with it.&lt;br /&gt;
&lt;br /&gt;
'''Note!''' If the usb connection is unstable or breaks time to time, one reason for this can be the network-manager (Ubuntu). &lt;br /&gt;
You can remove the network-manager and configure network settings manually. This is recommended to do for OTS workers and maybe to your desktop, not for laptops (WLAN connections are hard to create after removing the network-manager).&lt;br /&gt;
 &lt;br /&gt;
 sudo apt-get purge network-manager&lt;br /&gt;
&lt;br /&gt;
Edit /etc/network/interfaces and add next lines (this assumes that your wired connection is eth0 and it uses dhcp):&lt;br /&gt;
&lt;br /&gt;
 auto eth0&lt;br /&gt;
 iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
    address 192.168.2.14&lt;br /&gt;
    netmask 255.255.255.0&lt;br /&gt;
    network 192.168.2.0&lt;br /&gt;
    broadcast 192.168.2.255&lt;br /&gt;
    up iptables -A POSTROUTING -t nat -j MASQUERADE&lt;br /&gt;
    up echo 1 &amp;gt;/proc/sys/net/ipv4/ip_forward&lt;br /&gt;
    down echo 0 &amp;gt;/proc/sys/net/ipv4/ip_forward&lt;br /&gt;
    down iptables -t nat -F POSTROUTING&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 10.04 ===&lt;br /&gt;
&lt;br /&gt;
If you're using Ubuntu 10.04 or 10.10 as your host you can get the host side configuration packages and tools from Tools:Testing debian repository by doing the following:&lt;br /&gt;
&lt;br /&gt;
1. [[Quality/QA-tools/How_to_set_up_repositories#Ubuntu_10.04|Set up Tools:Testing repository]]&lt;br /&gt;
&lt;br /&gt;
2. Install the host configuration package&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install eat-host-ubuntu&lt;br /&gt;
&lt;br /&gt;
The package 'eat-host-ubuntu' will install ssh-keys used to access the device under test for the root user and configure the host to receive syslogs from the device under test. In addition to the configuration the package will install testrunner-lite, testrunner-lite-hwinfo-meego and test-definition as it's dependencies.&lt;br /&gt;
&lt;br /&gt;
=== Fedora 13 ===&lt;br /&gt;
&lt;br /&gt;
Host side tools are also available from a Fedora 13 repository. Set up Fedora 13 as the host by doing the following:&lt;br /&gt;
&lt;br /&gt;
1. [[Quality/QA-tools/How_to_set_up_repositories#Fedora_13|Set up the repository]]&lt;br /&gt;
&lt;br /&gt;
2. Install the following packages from the repository mentioned above&lt;br /&gt;
&lt;br /&gt;
 # yum install eat-host eat-syslog-host&lt;br /&gt;
&lt;br /&gt;
== Setting up the device under test ==&lt;br /&gt;
&lt;br /&gt;
=== Nokia N900 ===&lt;br /&gt;
To enable host based test execution with N900 MeeGo image you need to install eat-device package to the image. The package will install ssh keys to enable passwordless logins from the host machine. Package eat-syslog-device can also be used to configure the images syslog settings so that syslogs get sent to the host machine.&lt;br /&gt;
&lt;br /&gt;
MeeGo images for the N900 have usb networking enabled by default. The devices IP address is 192.168.2.15&lt;br /&gt;
&lt;br /&gt;
=== Netbooks ===&lt;br /&gt;
Current assumption is that we will use ethernet connection to netbook. The netbook should have ip 192.168.2.15 and eat-device package installed. &lt;br /&gt;
Configuring DHCP for netbook is explained in [[PXE_boot_server|PXE_boot_server]].&lt;br /&gt;
&lt;br /&gt;
=== Other devices ===&lt;br /&gt;
If the device under test uses IP 192.168.2.15 and the test control PC uses IP 192.168.2.14 then you can make the set up by using the eat-device and eat-host packages. The default IP addresses need to be those to support OTS. If you need to use some other IP addresses you have to do some manual work to get host based test execution working.&lt;br /&gt;
&lt;br /&gt;
To enable host based test execution do the following:&lt;br /&gt;
&lt;br /&gt;
Add the test control PC's public ssh-key to the devices authorized_keys by&lt;br /&gt;
&lt;br /&gt;
 cat ~/.ssh/id_rsa.pub | ssh root@[devices's IP address] &amp;quot;mkdir -p ~/.ssh ; cat &amp;gt;&amp;gt; ~/.ssh/authorized_keys&amp;quot;&lt;br /&gt;
&lt;br /&gt;
you may also need to increase the device's sshd startups by&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;MaxStartUps 1024&amp;quot; &amp;gt;&amp;gt; /etc/ssh/sshd_config&lt;br /&gt;
&lt;br /&gt;
after this you should be able to run testrunner-lite from the host machine. If you need to get the device's syslog sent to the test control PC you have to edit the device's /etc/rsyslog.conf or /etc/syslog.conf depending if the image is using rsyslog or sysklogd. Newer MeeGo images are using sysklogd. For sysklogd do the following&lt;br /&gt;
&lt;br /&gt;
 cp /etc/syslog.conf /etc/syslog.conf.back&lt;br /&gt;
 echo &amp;quot;*.*;auth,authpriv.none                            @[control PC's IP]&amp;quot;\&lt;br /&gt;
 &amp;gt;&amp;gt; /etc/syslog.conf&lt;br /&gt;
 cp /etc/sysconfig/sysklogd /etc/sysconfig/sysklogd.back&lt;br /&gt;
 sed -e 's/SYSLOGD_OPTIONS.*/SYSLOGD_OPTIONS=\&amp;quot;-m 0 -r\&amp;quot;/' \&lt;br /&gt;
 /etc/sysconfig/sysklogd.back \&lt;br /&gt;
 &amp;gt; /etc/sysconfig/sysklogd&lt;br /&gt;
&lt;br /&gt;
After that setup the test control PC to receive the syslogs&lt;br /&gt;
&lt;br /&gt;
 cp /etc/sysconfig/sysklogd /etc/sysconfig/sysklogd.back&lt;br /&gt;
 cp /etc/syslog.conf /etc/syslog.conf.back&lt;br /&gt;
 echo &amp;quot;SYSLOGD_OPTIONS=\&amp;quot;-m 0 -r\&amp;quot;&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/sysklogd&lt;br /&gt;
 echo &amp;quot;:fromhost-ip, isequal, &amp;quot;[device's IP]&amp;quot;                     /var/log/eat.log&amp;quot;\&lt;br /&gt;
 &amp;gt;&amp;gt; /etc/syslog.conf&lt;br /&gt;
&lt;br /&gt;
= Automatic image installations =&lt;br /&gt;
&lt;br /&gt;
== N900 ==&lt;br /&gt;
MeeGo images can be installed to the N900 automatically by using autoinstaller-n900.sh script. The script is included in [[File:autoinstaller-n900.tar.gz]]. The package also contains a custom initrd image and kernel that are used in the installation process. The package however does not include the Nokia flasher utility required by the process. The utility is available for N900 owners from [http://tablets-dev.nokia.com/ Nokia]&lt;br /&gt;
&lt;br /&gt;
Autoinstaller for N900 images is available here: [[File:autoinstaller-n900.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
'''Pre-requirements'''&lt;br /&gt;
&lt;br /&gt;
* Flasher utility is in the same folder as the script&lt;br /&gt;
* Device has an external microSD card&lt;br /&gt;
* Device is connected with USB cable to the host machine&lt;br /&gt;
* The device is powered off&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
After all the pre-requirements are met do the following&lt;br /&gt;
&lt;br /&gt;
 cd /path/to/directory/containing/script/&lt;br /&gt;
 sudo ./autoinstaller-n900.sh /path/to/raw-image /path/to/kernel&lt;br /&gt;
&lt;br /&gt;
Note that the kernel given to the script is the kernel that comes with the raw image.&lt;br /&gt;
&lt;br /&gt;
== Netbook ==&lt;br /&gt;
&lt;br /&gt;
The automated install of netbooks is still work in progress. Current idea is that the test control PC acts as a PXE boot server for the SUT (=netbook).&lt;br /&gt;
We boot into initrd image over ethernet and from there on do pretty much the same as with the N900. The following has been tested with Samsung NC 10 laptop.&lt;br /&gt;
&lt;br /&gt;
Autoinstaller for netbooks: [[File:autoinstaller-netbook.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
'''Pre-requirements'''&lt;br /&gt;
&lt;br /&gt;
* Laptop with PXE support&lt;br /&gt;
*[[PXE boot server]]&lt;br /&gt;
* Laptop connected to PXE server over ethernet and powered off&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
* Power on the laptop and press F12 (Samsung NC 10 has &amp;quot;PXE always on&amp;quot; BIOS option but it does not seem to have the desired effect).&lt;br /&gt;
* If all goes well you should see the following line on the laptop screen:&lt;br /&gt;
 Starting netcat for initial connection check&lt;br /&gt;
* Do the following &lt;br /&gt;
 cd /path/to/directory/containing/script/&lt;br /&gt;
 sudo ./autoinstaller-netbook.sh /path/to/raw-image&lt;br /&gt;
&lt;br /&gt;
== Other targets ==&lt;br /&gt;
No solution for other targets currently available&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
== N900 auto installation never finishes ==&lt;br /&gt;
&lt;br /&gt;
* Check if the copying is being done by&lt;br /&gt;
 sudo kill -USR1 `pidof dd`&lt;br /&gt;
&lt;br /&gt;
* Check if usb0 interface is configured&lt;br /&gt;
 ifconfig&lt;br /&gt;
&lt;br /&gt;
bring the interface up by&lt;br /&gt;
 ifconfig usb0 192.168.2.14 up&lt;br /&gt;
&lt;br /&gt;
The installation tries to bring the interface up automatically if it can't get a response from the device by doing the above command&lt;br /&gt;
&lt;br /&gt;
Note that USB hubs, etc. can slow down the installation significantly.&lt;br /&gt;
&lt;br /&gt;
== Freezing ssh sessions with host based execution ==&lt;br /&gt;
&lt;br /&gt;
Some users have a use case where they want to start a server process in a test step to be used by later test steps. If you fork a new process it is possible that the ssh session running freezes during logout until given timeout or when the process terminates. This blocks further test steps. Reason for this is that each test step is currently in its own ssh session and the forked process holds on to its standard pipes and working directory. This is discussed in more technical detail in [http://bugs.meego.com/show_bug.cgi?id=5718 bug 5718]. &lt;br /&gt;
&lt;br /&gt;
One solution to this issue is daemonizing the new process. Then it redirects it's input, output and error pipes to &amp;quot;/dev/null&amp;quot; and changes the working directory to root. Here's a short code snippet how to daemonize a C program.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 int main( int argc, char *argv[] ) {&lt;br /&gt;
   daemon(0, 0);&lt;br /&gt;
   /* actual code */&lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The server process '''must''' be terminated by a later test step so that it won't stay running in the device after test case.&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/Autotest-guide</id>
		<title>Quality/QA-tools/Autotest-guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/Autotest-guide"/>
				<updated>2010-11-19T10:11:50Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: Link to image creation and OBS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
This guide gives a walk through of the steps needed to automate testing in MeeGo. The guide is updated when automated testing solutions are updated or new parts for the system are taken into use so make sure to check the guide for updates every now and then.&lt;br /&gt;
&lt;br /&gt;
The current automated testing solution offers two different ways to execute the tests, from host pc through ssh or on the device under test itself. OTS uses host based testing to execute the tests. On device testing is meant to be used with manual testing and in special cases where host based testing is not an feasible option.&lt;br /&gt;
&lt;br /&gt;
For information about the tools used with test automation see [[Quality/QA-tools#Tools and Maintainers|QA-tools and maintainers]].&lt;br /&gt;
&lt;br /&gt;
== Feedback ==&lt;br /&gt;
Feel free to contribute and improve this guide. For questions and/or feedback about it pop by #meego-qa-tools at freenode or use [http://lists.meego.com/listinfo/meego-qa meego-qa mailing list].&lt;br /&gt;
&lt;br /&gt;
= Writing tests =&lt;br /&gt;
&lt;br /&gt;
== Test plan ==&lt;br /&gt;
Test plan is a XML file that contains your test suites, cases and steps. The basic principle of test plan XML and tool support is that you can use 'any' executable for testing.&lt;br /&gt;
&lt;br /&gt;
For more information on writing test plan XMLs see [[Quality/QA-tools/Test plan|Test plan]] page in this wiki.&lt;br /&gt;
&lt;br /&gt;
== Test packaging ==&lt;br /&gt;
&lt;br /&gt;
Test packaging is intended to provide flexible and consistent ways to run tests and get results. You may select testing tools of your choice.&lt;br /&gt;
&lt;br /&gt;
Test packaging is set of simple rules to wrap tests with test plan inside rpm package. Tool support for validating test plan and automating test plan execution is provided with testrunner. Following describes rpm-version of test packaging.&lt;br /&gt;
&lt;br /&gt;
A source package with test cases must:&lt;br /&gt;
&lt;br /&gt;
* build binary rpm package with name which ends with &amp;quot;&amp;lt;code&amp;gt;-tests&amp;lt;/code&amp;gt;&amp;quot; (this is a test package)&lt;br /&gt;
&lt;br /&gt;
A test package must:&lt;br /&gt;
&lt;br /&gt;
* contain all tests, scripts and configuration files required to run tests&lt;br /&gt;
* define dependencies - the ones it tests and the test tools it depends on (if any)&lt;br /&gt;
* contain a test plan located at &amp;lt;code&amp;gt;/usr/share/&amp;lt;packagename&amp;gt;-tests/tests.xml&amp;lt;/code&amp;gt; [1]&lt;br /&gt;
&lt;br /&gt;
For more information on creating test packages, see [[Quality/QA-tools/Test package|Test package]] page in this wiki.&lt;br /&gt;
&lt;br /&gt;
= Creating test images =&lt;br /&gt;
To perform automated testing you need to [[Image Creation|create images]] that contain test automation enablers and the tests. You can create two types of test images depending on how tests are planned to be executed.&lt;br /&gt;
&lt;br /&gt;
For reference kickstart files for test images, see: http://gitorious.org/qa-tools/eat/commits/ks&lt;br /&gt;
&lt;br /&gt;
== Images for host based testing ==&lt;br /&gt;
For host based testing the image needs to have the eat-device package installed and optionally eat-syslog-device in it. In addition to these configuration packages you need in to install test packages to the image since OTS fetches the tests from the image.&lt;br /&gt;
&lt;br /&gt;
== Images for on device testing ==&lt;br /&gt;
For on device testing install eat-selftest package along with your test packages to the image. This package finds and executes all tests found in the image automatically after boot and writes test results to $HOME/testresults. The tests are executed as the user meego.&lt;br /&gt;
&lt;br /&gt;
If you don't want the tests to be executed automatically and handle test execution yourself install testrunner-lite package to the image along with your tests. In this case the test execution is started like this&lt;br /&gt;
&lt;br /&gt;
 testrunner-lite -f /path/to/tests.xml -v -o /path/to/results.xml&lt;br /&gt;
&lt;br /&gt;
== Automating image creation ==&lt;br /&gt;
Solution for automated image creation is not yet available.&lt;br /&gt;
&lt;br /&gt;
One option is to use crontab and mic-image-creator.&lt;br /&gt;
&lt;br /&gt;
= Running tests =&lt;br /&gt;
Automated test execution in MeeGo can be done by using generic test execution tool called testrunner-lite. Testrunner-lite reads planned tests from test plan xml file which is validated against test-definition schema. The tool can be run on the device under test or from a test control pc.&lt;br /&gt;
&lt;br /&gt;
To enable automatically setting up the test environment we have created `eat` (Enable(s) Automated Testing) package. Eat package splits into different sub-packages listed below:&lt;br /&gt;
&lt;br /&gt;
* eat-device - Configures the device under test for host based testing&lt;br /&gt;
* eat-selftest - Configures the device run tests automatically on boot&lt;br /&gt;
* eat-host - Configures test control pc for host based testing&lt;br /&gt;
* eat-syslog-device - Configures device's syslog to be sent to the host machince&lt;br /&gt;
* eat-syslog-host - Configures host's syslog to receive syslogs from the device under test&lt;br /&gt;
&lt;br /&gt;
== Automatically running test packages on image ==&lt;br /&gt;
Tests can be run automatically on a MeeGo image by adding package eat-selftest to the image.&lt;br /&gt;
&lt;br /&gt;
eat-selftest package pulls testrunner-lite and test-definition as dependencies to the image. The package itself installs an init script that finds all installed test packages and calls testrunner-lite to execute them. Test packages need to be installed in /usr/share/&amp;lt;packagename&amp;gt;-tests/tests.xml, otherwise the script doesn't find them.&lt;br /&gt;
&lt;br /&gt;
Results from the test and logs from the test runs are written to $HOME/testresults whese $HOME is the path to the user's home who is executing the tests.&lt;br /&gt;
&lt;br /&gt;
== Running test from test control pc ==&lt;br /&gt;
If testing is performed by [[Quality/QA-tools/OTS|OTS]] the test packages are fetched from the device and you don't need to manually start the test execution. To manually start test execution from the test control pc (host machine) you need to have the test plan xml files available on the host. To start executing tests in the device under test you need to tell testrunner-lite the device's IP address. For example&lt;br /&gt;
&lt;br /&gt;
 testrunner-lite -f tests.xml -v -o results.xml -t root@192.168.2.15&lt;br /&gt;
&lt;br /&gt;
= Setting up test automation environment =&lt;br /&gt;
This chapter describes how to set up you own test automation environment. The environment includes host machine configuration, setting up OTS server and configuring the device under test.&lt;br /&gt;
&lt;br /&gt;
== Setting up the host machine ==&lt;br /&gt;
RPM packages produced by [[Build Infrastructure|obs]] are only tested to work with MeeGo and Fedora 13. If you're using Ubuntu as your host see the Ubuntu 10.04 subsection.&lt;br /&gt;
&lt;br /&gt;
Install the package eat-host to you host machine. This package will install ssh-keys needed for passwordless authentication and testrunner-lite and test-definition as dependencies. If you need also to receive syslogs from the device under test, also install the eat-syslog-host/device packages.&lt;br /&gt;
&lt;br /&gt;
After installing you need to configure the host machine to use usb networking with the device under test. With Fedora you can do this by right-clicking the network managet icon and selecting edit connections. Edit the &amp;quot;Auto usb0&amp;quot; -connections IPv4 Settings and set Method to Manual and define the following Address to it:&lt;br /&gt;
&lt;br /&gt;
 Address: 192.168.2.14&lt;br /&gt;
 Netmask: 255.255.255.0&lt;br /&gt;
 Gateway: 0.0.0.0&lt;br /&gt;
&lt;br /&gt;
or if you don't use network manager to manage your networking do the following&lt;br /&gt;
&lt;br /&gt;
 # ifconfig usb0 192.168.2.14 up&lt;br /&gt;
&lt;br /&gt;
After this your host machine should be ready to act as a test control pc. Have fun testing with it.&lt;br /&gt;
&lt;br /&gt;
'''Note!''' If the usb connection is unstable or breaks time to time, one reason for this can be the network-manager (Ubuntu). &lt;br /&gt;
You can remove the network-manager and configure network settings manually. This is recommended to do for OTS workers and maybe to your desktop, not for laptops (WLAN connections are hard to create after removing the network-manager).&lt;br /&gt;
 &lt;br /&gt;
 sudo apt-get purge network-manager&lt;br /&gt;
&lt;br /&gt;
Edit /etc/network/interfaces and add next lines (this assumes that your wired connection is eth0 and it uses dhcp):&lt;br /&gt;
&lt;br /&gt;
 auto eth0&lt;br /&gt;
 iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
 auto usb0&lt;br /&gt;
 iface usb0 inet static&lt;br /&gt;
    address 192.168.2.14&lt;br /&gt;
    netmask 255.255.255.0&lt;br /&gt;
    network 192.168.2.0&lt;br /&gt;
    broadcast 192.168.2.255&lt;br /&gt;
    up iptables -A POSTROUTING -t nat -j MASQUERADE&lt;br /&gt;
    up echo 1 &amp;gt;/proc/sys/net/ipv4/ip_forward&lt;br /&gt;
    down echo 0 &amp;gt;/proc/sys/net/ipv4/ip_forward&lt;br /&gt;
    down iptables -t nat -F POSTROUTING&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 10.04 ===&lt;br /&gt;
&lt;br /&gt;
If you're using Ubuntu 10.04 or 10.10 as your host you can get the host side configuration packages and tools from Tools:Testing debian repository by doing the following:&lt;br /&gt;
&lt;br /&gt;
1. [[Quality/QA-tools/How_to_set_up_repositories#Ubuntu_10.04|Set up Tools:Testing repository]]&lt;br /&gt;
&lt;br /&gt;
2. Install the host configuration package&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install eat-host-ubuntu&lt;br /&gt;
&lt;br /&gt;
The package 'eat-host-ubuntu' will install ssh-keys used to access the device under test for the root user and configure the host to receive syslogs from the device under test. In addition to the configuration the package will install testrunner-lite, testrunner-lite-hwinfo-meego and test-definition as it's dependencies.&lt;br /&gt;
&lt;br /&gt;
=== Fedora 13 ===&lt;br /&gt;
&lt;br /&gt;
Host side tools are also available from a Fedora 13 repository. Set up Fedora 13 as the host by doing the following:&lt;br /&gt;
&lt;br /&gt;
1. [[Quality/QA-tools/How_to_set_up_repositories#Fedora_13|Set up the repository]]&lt;br /&gt;
&lt;br /&gt;
2. Install the following packages from the repository mentioned above&lt;br /&gt;
&lt;br /&gt;
 # yum install eat-host eat-syslog-host&lt;br /&gt;
&lt;br /&gt;
== Setting up the device under test ==&lt;br /&gt;
&lt;br /&gt;
=== Nokia N900 ===&lt;br /&gt;
To enable host based test execution with N900 MeeGo image you need to install eat-device package to the image. The package will install ssh keys to enable passwordless logins from the host machine. Package eat-syslog-device can also be used to configure the images syslog settings so that syslogs get sent to the host machine.&lt;br /&gt;
&lt;br /&gt;
MeeGo images for the N900 have usb networking enabled by default. The devices IP address is 192.168.2.15&lt;br /&gt;
&lt;br /&gt;
=== Netbooks ===&lt;br /&gt;
Current assumption is that we will use ethernet connection to netbook. The netbook should have ip 192.168.2.15 and eat-device package installed. &lt;br /&gt;
Configuring DHCP for netbook is explained in [[PXE_boot_server|PXE_boot_server]].&lt;br /&gt;
&lt;br /&gt;
=== Other devices ===&lt;br /&gt;
If the device under test uses IP 192.168.2.15 and the test control PC uses IP 192.168.2.14 then you can make the set up by using the eat-device and eat-host packages. The default IP addresses need to be those to support OTS. If you need to use some other IP addresses you have to do some manual work to get host based test execution working.&lt;br /&gt;
&lt;br /&gt;
To enable host based test execution do the following:&lt;br /&gt;
&lt;br /&gt;
Add the test control PC's public ssh-key to the devices authorized_keys by&lt;br /&gt;
&lt;br /&gt;
 cat ~/.ssh/id_rsa.pub | ssh root@[devices's IP address] &amp;quot;mkdir -p ~/.ssh ; cat &amp;gt;&amp;gt; ~/.ssh/authorized_keys&amp;quot;&lt;br /&gt;
&lt;br /&gt;
you may also need to increase the device's sshd startups by&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;MaxStartUps 1024&amp;quot; &amp;gt;&amp;gt; /etc/ssh/sshd_config&lt;br /&gt;
&lt;br /&gt;
after this you should be able to run testrunner-lite from the host machine. If you need to get the device's syslog sent to the test control PC you have to edit the device's /etc/rsyslog.conf or /etc/syslog.conf depending if the image is using rsyslog or sysklogd. Newer MeeGo images are using sysklogd. For sysklogd do the following&lt;br /&gt;
&lt;br /&gt;
 cp /etc/syslog.conf /etc/syslog.conf.back&lt;br /&gt;
 echo &amp;quot;*.*;auth,authpriv.none                            @[control PC's IP]&amp;quot;\&lt;br /&gt;
 &amp;gt;&amp;gt; /etc/syslog.conf&lt;br /&gt;
 cp /etc/sysconfig/sysklogd /etc/sysconfig/sysklogd.back&lt;br /&gt;
 sed -e 's/SYSLOGD_OPTIONS.*/SYSLOGD_OPTIONS=\&amp;quot;-m 0 -r\&amp;quot;/' \&lt;br /&gt;
 /etc/sysconfig/sysklogd.back \&lt;br /&gt;
 &amp;gt; /etc/sysconfig/sysklogd&lt;br /&gt;
&lt;br /&gt;
After that setup the test control PC to receive the syslogs&lt;br /&gt;
&lt;br /&gt;
 cp /etc/sysconfig/sysklogd /etc/sysconfig/sysklogd.back&lt;br /&gt;
 cp /etc/syslog.conf /etc/syslog.conf.back&lt;br /&gt;
 echo &amp;quot;SYSLOGD_OPTIONS=\&amp;quot;-m 0 -r\&amp;quot;&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/sysklogd&lt;br /&gt;
 echo &amp;quot;:fromhost-ip, isequal, &amp;quot;[device's IP]&amp;quot;                     /var/log/eat.log&amp;quot;\&lt;br /&gt;
 &amp;gt;&amp;gt; /etc/syslog.conf&lt;br /&gt;
&lt;br /&gt;
= Automatic image installations =&lt;br /&gt;
&lt;br /&gt;
== N900 ==&lt;br /&gt;
MeeGo images can be installed to the N900 automatically by using autoinstaller-n900.sh script. The script is included in [[File:autoinstaller-n900.tar.gz]]. The package also contains a custom initrd image and kernel that are used in the installation process. The package however does not include the Nokia flasher utility required by the process. The utility is available for N900 owners from [http://tablets-dev.nokia.com/ Nokia]&lt;br /&gt;
&lt;br /&gt;
Autoinstaller for N900 images is available here: [[File:autoinstaller-n900.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
'''Pre-requirements'''&lt;br /&gt;
&lt;br /&gt;
* Flasher utility is in the same folder as the script&lt;br /&gt;
* Device has an external microSD card&lt;br /&gt;
* Device is connected with USB cable to the host machine&lt;br /&gt;
* The device is powered off&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
After all the pre-requirements are met do the following&lt;br /&gt;
&lt;br /&gt;
 cd /path/to/directory/containing/script/&lt;br /&gt;
 sudo ./autoinstaller-n900.sh /path/to/raw-image /path/to/kernel&lt;br /&gt;
&lt;br /&gt;
Note that the kernel given to the script is the kernel that comes with the raw image.&lt;br /&gt;
&lt;br /&gt;
== Netbook ==&lt;br /&gt;
&lt;br /&gt;
The automated install of netbooks is still work in progress. Current idea is that the test control PC acts as a PXE boot server for the SUT (=netbook).&lt;br /&gt;
We boot into initrd image over ethernet and from there on do pretty much the same as with the N900. The following has been tested with Samsung NC 10 laptop.&lt;br /&gt;
&lt;br /&gt;
Autoinstaller for netbooks: [[File:autoinstaller-netbook.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
'''Pre-requirements'''&lt;br /&gt;
&lt;br /&gt;
* Laptop with PXE support&lt;br /&gt;
*[[PXE boot server]]&lt;br /&gt;
* Laptop connected to PXE server over ethernet and powered off&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
* Power on the laptop and press F12 (Samsung NC 10 has &amp;quot;PXE always on&amp;quot; BIOS option but it does not seem to have the desired effect).&lt;br /&gt;
* If all goes well you should see the following line on the laptop screen:&lt;br /&gt;
 Starting netcat for initial connection check&lt;br /&gt;
* Do the following &lt;br /&gt;
 cd /path/to/directory/containing/script/&lt;br /&gt;
 sudo ./autoinstaller-netbook.sh /path/to/raw-image&lt;br /&gt;
&lt;br /&gt;
== Other targets ==&lt;br /&gt;
No solution for other targets currently available&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
== N900 auto installation never finishes ==&lt;br /&gt;
&lt;br /&gt;
* Check if the copying is being done by&lt;br /&gt;
 sudo kill -USR1 `pidof dd`&lt;br /&gt;
&lt;br /&gt;
* Check if usb0 interface is configured&lt;br /&gt;
 ifconfig&lt;br /&gt;
&lt;br /&gt;
bring the interface up by&lt;br /&gt;
 ifconfig usb0 192.168.2.14 up&lt;br /&gt;
&lt;br /&gt;
The installation tries to bring the interface up automatically if it can't get a response from the device by doing the above command&lt;br /&gt;
&lt;br /&gt;
Note that USB hubs, etc. can slow down the installation significantly.&lt;br /&gt;
&lt;br /&gt;
== Freezing ssh sessions with host based execution ==&lt;br /&gt;
&lt;br /&gt;
Some users have a use case where they want to start a server process in a test step to be used by later test steps. If you fork a new process it is possible that the ssh session running freezes during logout until given timeout or when the process terminates. This blocks further test steps. Reason for this is that each test step is currently in its own ssh session and the forked process holds on to its standard pipes and working directory. This is discussed in more technical detail in [http://bugs.meego.com/show_bug.cgi?id=5718 bug 5718]. &lt;br /&gt;
&lt;br /&gt;
One solution to this issue is daemonizing the new process. Then it redirects it's input, output and error pipes to &amp;quot;/dev/null&amp;quot; and changes the working directory to root. Here's a short code snippet how to daemonize a C program.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 int main( int argc, char *argv[] ) {&lt;br /&gt;
   daemon(0, 0);&lt;br /&gt;
   /* actual code */&lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The server process '''must''' be terminated by a later test step so that it won't stay running in the device after test case.&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/Autotest-guide</id>
		<title>Quality/QA-tools/Autotest-guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/Autotest-guide"/>
				<updated>2010-11-17T10:21:22Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Introduction */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
This guide gives a walk through of the steps needed to automate testing in MeeGo. The guide is updated when automated testing solutions are updated or new parts for the system are taken into use so make sure to check the guide for updates every now and then.&lt;br /&gt;
&lt;br /&gt;
The current automated testing solution offers two different ways to execute the tests, from host pc through ssh or on the device under test itself. OTS uses host based testing to execute the tests. On device testing is meant to be used with manual testing and in special cases where host based testing is not an feasible option.&lt;br /&gt;
&lt;br /&gt;
For information about the tools used with test automation see [[Quality/QA-tools#Tools and Maintainers|QA-tools and maintainers]].&lt;br /&gt;
&lt;br /&gt;
== Feedback ==&lt;br /&gt;
Feel free to contribute and improve this guide. For questions and/or feedback about it pop by #meego-qa-tools at freenode or use [http://lists.meego.com/listinfo/meego-qa meego-qa mailing list].&lt;br /&gt;
&lt;br /&gt;
= Writing tests =&lt;br /&gt;
&lt;br /&gt;
== Test plan ==&lt;br /&gt;
Test plan is a XML file that contains your test suites, cases and steps. The basic principle of test plan XML and tool support is that you can use 'any' executable for testing.&lt;br /&gt;
&lt;br /&gt;
For more information on writing test plan XMLs see [[Quality/QA-tools/Test plan|Test plan]] page in this wiki.&lt;br /&gt;
&lt;br /&gt;
== Test packaging ==&lt;br /&gt;
&lt;br /&gt;
Test packaging is intended to provide flexible and consistent ways to run tests and get results. You may select testing tools of your choice.&lt;br /&gt;
&lt;br /&gt;
Test packaging is set of simple rules to wrap tests with test plan inside rpm package. Tool support for validating test plan and automating test plan execution is provided with testrunner. Following describes rpm-version of test packaging.&lt;br /&gt;
&lt;br /&gt;
A source package with test cases must:&lt;br /&gt;
&lt;br /&gt;
* build binary rpm package with name which ends with &amp;quot;&amp;lt;code&amp;gt;-tests&amp;lt;/code&amp;gt;&amp;quot; (this is a test package)&lt;br /&gt;
&lt;br /&gt;
A test package must:&lt;br /&gt;
&lt;br /&gt;
* contain all tests, scripts and configuration files required to run tests&lt;br /&gt;
* define dependencies - the ones it tests and the test tools it depends on (if any)&lt;br /&gt;
* contain test plan located at &amp;lt;code&amp;gt;/usr/share/&amp;lt;packagename&amp;gt;-tests/tests.xml&amp;lt;/code&amp;gt; [1]&lt;br /&gt;
&lt;br /&gt;
For more information on creating test packages, see [[Quality/QA-tools/Test package|Test package]] page in this wiki.&lt;br /&gt;
&lt;br /&gt;
= Creating test images =&lt;br /&gt;
To perform automated testing you need to create images that contain test automation enablers and the tests. You can create two types of test images depending on how tests are planned to be executed.&lt;br /&gt;
&lt;br /&gt;
For reference kickstart files for test images, see: http://gitorious.org/qa-tools/eat/commits/ks&lt;br /&gt;
&lt;br /&gt;
== Images for host based testing ==&lt;br /&gt;
For host based testing the image needs to have the eat-device package installed and optionally eat-syslog-device in it. In addition to these configuration packages you need in to install test packages to the image since OTS fetches the tests from the image.&lt;br /&gt;
&lt;br /&gt;
== Images for on device testing ==&lt;br /&gt;
For on device testing install eat-selftest package along with your test packages to the image. This package finds and executes all tests found in the image automatically after boot and writes test results to $HOME/testresults. The tests are executed as the user meego.&lt;br /&gt;
&lt;br /&gt;
If you don't want the tests to be executed automatically and handle test execution yourself install testrunner-lite package to the image along with your tests. In this case the test execution is started like this&lt;br /&gt;
&lt;br /&gt;
 testrunner-lite -f /path/to/tests.xml -v -o /path/to/results.xml&lt;br /&gt;
&lt;br /&gt;
== Automating image creation ==&lt;br /&gt;
Solution for automated image creation is not yet available.&lt;br /&gt;
&lt;br /&gt;
= Running tests =&lt;br /&gt;
Automated test execution in MeeGo can be done by using generic test execution tool called testrunner-lite. Testrunner-lite reads planned tests from test plan xml file which is validated against test-definition schema. The tool can be run on the device under test or from a test control pc.&lt;br /&gt;
&lt;br /&gt;
To enable automatically setting up the test environment we have the created `eat` (Enable(s) Automated Testing) package. Eat package splits into different sub-packages listed below:&lt;br /&gt;
&lt;br /&gt;
* eat-device - Configures the device under test for host based testing&lt;br /&gt;
* eat-selftest - Configures the device run tests automatically on boot&lt;br /&gt;
* eat-host - Configures test control pc for host based testing&lt;br /&gt;
* eat-syslog-device - Configures device's syslog to be sent to the host machince&lt;br /&gt;
* eat-syslog-host - Configures host's syslog to receive syslogs from the device under test&lt;br /&gt;
&lt;br /&gt;
== Automatically running test packages on image ==&lt;br /&gt;
Tests can be run automatically on a MeeGo image by adding package eat-selftest to the image.&lt;br /&gt;
&lt;br /&gt;
eat-selftest package pulls testrunner-lite and test-definition as dependencies to the image. The package itself installs an init script that finds all installed test packages and calls testrunner-lite to execute them. Test packages need to be installed in /usr/share/&amp;lt;packagename&amp;gt;-tests/tests.xml, otherwise the script doesn't find them.&lt;br /&gt;
&lt;br /&gt;
Results from the test and logs from the test runs are written to $HOME/testresults whese $HOME is the path to the user's home who is executing the tests.&lt;br /&gt;
&lt;br /&gt;
== Running test from test control pc ==&lt;br /&gt;
If testing is performed by [[Quality/QA-tools/OTS|OTS]] the test packages are fetched from the device and you don't need to manually start the test execution. To manually start test execution from the test control pc (host machine) you need to have the test plan xml files available on the host. To start executing tests in the device under test you need to tell testrunner-lite the device's IP address. For example&lt;br /&gt;
&lt;br /&gt;
 testrunner-lite -f tests.xml -v -o results.xml -t root@192.168.2.15&lt;br /&gt;
&lt;br /&gt;
= Setting up test automation environment =&lt;br /&gt;
This chapter describes how to set up you own test automation environment. The environment includes host machine configuration, setting up OTS server and configuring the device under test.&lt;br /&gt;
&lt;br /&gt;
== Setting up the host machine ==&lt;br /&gt;
RPM packages produced by obs are only tested to work with MeeGo and Fedora 13. If you're using ubuntu as your host see the Ubuntu 10.04 subsection.&lt;br /&gt;
&lt;br /&gt;
Install the package eat-host to you host machine. This package will install ssh-keys needed for passwordless authentication and testrunner-lite and test-definition as dependencies. If you need also to receive syslogs from the device under test, also install the eat-syslog-host/device packages.&lt;br /&gt;
&lt;br /&gt;
After installing you need to configure the host machine to use usb networking with the device under test. With Fedora you can do this by right-clicking the network managet icon and selecting edit connections. Edit the &amp;quot;Auto usb0&amp;quot; -connections IPv4 Settings and set Method to Manual and define the following Address to it:&lt;br /&gt;
&lt;br /&gt;
 Address: 192.168.2.14&lt;br /&gt;
 Netmask: 255.255.255.0&lt;br /&gt;
 Gateway: 0.0.0.0&lt;br /&gt;
&lt;br /&gt;
or if you don't use network manager to manage your networking do the following&lt;br /&gt;
&lt;br /&gt;
 # ifconfig usb0 192.168.2.14 up&lt;br /&gt;
&lt;br /&gt;
After this your host machine should be ready to act as a test control pc. Have fun testing with it.&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 10.04 ===&lt;br /&gt;
If you're using Ubuntu 10.04 as your host you can get the host side configuration packages and tools from Tools:Testing debian repository by doing the following.&lt;br /&gt;
&lt;br /&gt;
1. Add the following to your sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://download.meego.com/live/Tools:/Testing/xUbuntu_10.04/ /&lt;br /&gt;
&lt;br /&gt;
2. Add the repository key&lt;br /&gt;
&lt;br /&gt;
 wget http://download.meego.com/live/Tools:/Testing/xUbuntu_10.04/Release.key&lt;br /&gt;
 sudo apt-key add Release.key&lt;br /&gt;
 rm Release.key&lt;br /&gt;
&lt;br /&gt;
3. Update your PC's package information&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
4. Install the host configuration package&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install eat-host-ubuntu&lt;br /&gt;
&lt;br /&gt;
The package 'eat-host-ubuntu' will install ssh-keys used to access the device under test for the root user and configure the host to receive syslogs from the device under test. In addition to the configuration the package will install testrunner-lite, testrunner-lite-hwinfo-meego and test-definition as it's dependencies.&lt;br /&gt;
&lt;br /&gt;
=== Fedora 13 ===&lt;br /&gt;
Host side tools are also available from a Fedora 13 repository.&lt;br /&gt;
&lt;br /&gt;
 http://download.meego.com/live/Tools:/Testing/Fedora13/Tools:Testing.repo&lt;br /&gt;
&lt;br /&gt;
To set up Fedora 13 as the host, install the following packages from the repository mentioned above&lt;br /&gt;
&lt;br /&gt;
 # yum install eat-host eat-syslog-host&lt;br /&gt;
&lt;br /&gt;
== Setting up the device under test ==&lt;br /&gt;
&lt;br /&gt;
=== Nokia N900 ===&lt;br /&gt;
To enable host based test execution with N900 MeeGo image you need to install eat-device package to the image. The package will install ssh keys to enable passwordless logins from the host machine. Package eat-syslog-device can also be used to configure the images syslog settings so that syslogs get sent to the host machine.&lt;br /&gt;
&lt;br /&gt;
MeeGo images for the N900 have usb networking enabled by default. The devices IP address is 192.168.2.15&lt;br /&gt;
&lt;br /&gt;
=== Netbooks ===&lt;br /&gt;
Current assumption is that we will use ethernet connection to netbook. The netbook should have ip 192.168.2.15 and eat-device package installed. &lt;br /&gt;
Configuring DHCP for netbook is explained in [[PXE_boot_server|PXE_boot_server]].&lt;br /&gt;
&lt;br /&gt;
=== Other devices ===&lt;br /&gt;
If the device under test uses IP 192.168.2.15 and the test control PC uses IP 192.168.2.14 then you can make the set up by using the eat-device and eat-host packages. The default IP addresses need to be those to support OTS. If you need to use some other IP addresses you have to do some manual work to get host based test execution working.&lt;br /&gt;
&lt;br /&gt;
To enable host based test execution do the following:&lt;br /&gt;
&lt;br /&gt;
Add the test control PC's public ssh-key to the devices authorized_keys by&lt;br /&gt;
&lt;br /&gt;
 cat ~/.ssh/id_rsa.pub | ssh root@[devices's IP address] &amp;quot;mkdir -p ~/.ssh ; cat &amp;gt;&amp;gt; ~/.ssh/authorized_keys&amp;quot;&lt;br /&gt;
&lt;br /&gt;
you may also need to increase the device's sshd startups by&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;MaxStartUps 1024&amp;quot; &amp;gt;&amp;gt; /etc/ssh/sshd_config&lt;br /&gt;
&lt;br /&gt;
after this you should be able to run testrunner-lite from the host machine. If you need to get the device's syslog sent to the test control PC you have to edit the device's /etc/rsyslog.conf or /etc/syslog.conf depending if the image is using rsyslog or sysklogd. Newer MeeGo images are using sysklogd. For sysklogd do the following&lt;br /&gt;
&lt;br /&gt;
 cp /etc/syslog.conf /etc/syslog.conf.back&lt;br /&gt;
 echo &amp;quot;*.*;auth,authpriv.none                            @[control PC's IP]&amp;quot;\&lt;br /&gt;
 &amp;gt;&amp;gt; /etc/syslog.conf&lt;br /&gt;
 cp /etc/sysconfig/sysklogd /etc/sysconfig/sysklogd.back&lt;br /&gt;
 sed -e 's/SYSLOGD_OPTIONS.*/SYSLOGD_OPTIONS=\&amp;quot;-m 0 -r\&amp;quot;/' \&lt;br /&gt;
 /etc/sysconfig/sysklogd.back \&lt;br /&gt;
 &amp;gt; /etc/sysconfig/sysklogd&lt;br /&gt;
&lt;br /&gt;
After that setup the test control PC to receive the syslogs&lt;br /&gt;
&lt;br /&gt;
 cp /etc/sysconfig/sysklogd /etc/sysconfig/sysklogd.back&lt;br /&gt;
 cp /etc/syslog.conf /etc/syslog.conf.back&lt;br /&gt;
 echo &amp;quot;SYSLOGD_OPTIONS=\&amp;quot;-m 0 -r\&amp;quot;&amp;quot; &amp;gt;&amp;gt; /etc/sysconfig/sysklogd&lt;br /&gt;
 echo &amp;quot;:fromhost-ip, isequal, &amp;quot;[device's IP]&amp;quot;                     /var/log/eat.log&amp;quot;\&lt;br /&gt;
 &amp;gt;&amp;gt; /etc/syslog.conf&lt;br /&gt;
&lt;br /&gt;
= Automatic image installations =&lt;br /&gt;
&lt;br /&gt;
== N900 ==&lt;br /&gt;
MeeGo images can be installed to the N900 automatically by using autoinstaller-n900.sh script. The script is included in [[File:autoinstaller-n900.tar.gz]]. The package also contains a custom initrd image and kernel that are used in the installation process. The package however does not include the Nokia flasher utility required by the process. The utility is available for N900 owners from [http://tablets-dev.nokia.com/ Nokia]&lt;br /&gt;
&lt;br /&gt;
Autoinstaller for N900 images is available here: [[File:autoinstaller-n900.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
'''Pre-requirements'''&lt;br /&gt;
&lt;br /&gt;
* Flasher utility is in the same folder as the script&lt;br /&gt;
* Device has an external microSD card&lt;br /&gt;
* Device is connected with USB cable to the host machine&lt;br /&gt;
* The device is powered off&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
After all the pre-requirements are met do the following&lt;br /&gt;
&lt;br /&gt;
 cd /path/to/directory/containing/script/&lt;br /&gt;
 sudo ./autoinstaller-n900.sh /path/to/raw-image /path/to/kernel&lt;br /&gt;
&lt;br /&gt;
Note that the kernel given to the script is the kernel that comes with the raw image.&lt;br /&gt;
&lt;br /&gt;
== Netbook ==&lt;br /&gt;
&lt;br /&gt;
The automated install of netbooks is still work in progress. Current idea is that the test control PC acts as a PXE boot server for the SUT (=netbook).&lt;br /&gt;
We boot into initrd image over ethernet and from there on do pretty much the same as with the N900. The following has been tested with Samsung NC 10 laptop.&lt;br /&gt;
&lt;br /&gt;
Autoinstaller for netbooks: [[File:autoinstaller-netbook.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
'''Pre-requirements'''&lt;br /&gt;
&lt;br /&gt;
* Laptop with PXE support&lt;br /&gt;
*[[PXE boot server]]&lt;br /&gt;
* Laptop connected to PXE server over ethernet and powered off&lt;br /&gt;
&lt;br /&gt;
'''Usage'''&lt;br /&gt;
&lt;br /&gt;
* Power on the laptop and press F12 (Samsung NC 10 has &amp;quot;PXE always on&amp;quot; BIOS option but it does not seem to have the desired effect).&lt;br /&gt;
* If all goes well you should see the following line on the laptop screen:&lt;br /&gt;
 Starting netcat for initial connection check&lt;br /&gt;
* Do the following &lt;br /&gt;
 cd /path/to/directory/containing/script/&lt;br /&gt;
 sudo ./autoinstaller-netbook.sh /path/to/raw-image&lt;br /&gt;
&lt;br /&gt;
== Other targets ==&lt;br /&gt;
No solution for other targets currently available&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
== N900 auto installation never finishes ==&lt;br /&gt;
&lt;br /&gt;
* Check if the copying is being done by&lt;br /&gt;
 sudo kill -USR1 `pidof dd`&lt;br /&gt;
&lt;br /&gt;
* Check if usb0 interface is configured&lt;br /&gt;
 ifconfig&lt;br /&gt;
&lt;br /&gt;
bring the interface up by&lt;br /&gt;
 ifconfig usb0 192.168.2.14 up&lt;br /&gt;
&lt;br /&gt;
The installation tries to bring the interface up automatically if it can't get a response from the device by doing the above command&lt;br /&gt;
&lt;br /&gt;
Note that USB hubs, etc. can slow down the installation significantly.&lt;br /&gt;
&lt;br /&gt;
== Freezing ssh sessions with host based execution ==&lt;br /&gt;
&lt;br /&gt;
Some users have a use case where they want to start a server process in a test step to be used by later test steps. If you fork a new process it is possible that the ssh session running freezes during logout until given timeout or when the process terminates. This blocks further test steps. Reason for this is that each test step is currently in its own ssh session and the forked process holds on to its standard pipes and working directory. This is discussed in more technical detail in [http://bugs.meego.com/show_bug.cgi?id=5718 bug 5718]. &lt;br /&gt;
&lt;br /&gt;
One solution to this issue is daemonizing the new process. Then it redirects it's input, output and error pipes to &amp;quot;/dev/null&amp;quot; and changes the working directory to root. Here's a short code snippet how to daemonize a C program.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 int main( int argc, char *argv[] ) {&lt;br /&gt;
   daemon(0, 0);&lt;br /&gt;
   /* actual code */&lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The server process '''must''' be terminated by a later test step so that it won't stay running in the device after test case.&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools</id>
		<title>Quality/QA-tools</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools"/>
				<updated>2010-11-01T08:43:28Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Team Members and Collaboration Spaces */ Added myself&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Quality Assurance (QA) Tools =&lt;br /&gt;
&lt;br /&gt;
Quality Assurance tools are developed to ensure MeeGo SW quality. QA tools team develops and maintains tools for Quality Assurance.&lt;br /&gt;
&lt;br /&gt;
 Open source tools  – available for all, available for development and contributions. Make people accountable for quality.&lt;br /&gt;
&lt;br /&gt;
Anyone is welcome to contribute and non-member contributions will be treated with same process and review as member contributions. We follow [http://meego.com/about/contribution-guidelines MeeGo contribution guidelines]. In addition, you may take personal clone from our [http://gitorious.org/qa-tools git repositories] and create merge request. Tool maintainers in our projects will review your contributions and decide on merge.&lt;br /&gt;
&lt;br /&gt;
'''Targets:'''&lt;br /&gt;
&lt;br /&gt;
 * Improve MeeGo test reporting tools - target from MeeGo Quality Assurance&lt;br /&gt;
   * Currently test reports are published manually to wiki  &lt;br /&gt;
 * Improve MeeGo test automation (execution and software installation) - target from MeeGo release engineering&lt;br /&gt;
&lt;br /&gt;
&amp;quot;As Core OS release release manager I want to verify trunk:testing packages frequently so that I know the quality of nightly/weekly releases.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Tools and Maintainers ==&lt;br /&gt;
&lt;br /&gt;
Tool maintainers are selected based on developer experience with particular tool/package or seniority. Tool maintainers have been agreed [[Quality/QA-tools/Meetings|in the QA-tools weekly meeting]] Tuesday September 7th 2010. Changes, if needed, are discussed also there.&lt;br /&gt;
&lt;br /&gt;
In practice only tool maintainers will have commit and review right to particular repository - later several people may have rights to repository based on merit (as proposed by tool maintainer). Others must follow [http://meego.com/about/contribution-guidelines MeeGo contribution guidelines] to submit patches or personal clone + merge request approach. &lt;br /&gt;
 &lt;br /&gt;
The maintainer of the tree shall update the changelog.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|'''Tool (link to gitorious)''' ||'''Wiki Page''' ||'''Maintainer''' ||'''Substitute'''&lt;br /&gt;
|- &lt;br /&gt;
| [http://gitorious.org/qa-tools/test-definition test-definition] || [[Quality/QA-tools/Test-definition|Link]] || Sampo Saaristo || Timo Härkönen&lt;br /&gt;
|-&lt;br /&gt;
| [http://gitorious.org/qa-tools/testrunner-lite testrunner-lite] || [[Quality/QA-tools/Testrunner-lite|Link]] || Sampo Saaristo || Kyösti Ranto&lt;br /&gt;
|-&lt;br /&gt;
| [http://gitorious.org/qa-tools/testrunner-ui Testrunner-UI] || [[Quality/QA-tools/Testrunner-ui|Link]] || Kyösti Ranto || Timo Härkönen &lt;br /&gt;
|- &lt;br /&gt;
| [http://gitorious.org/qa-tools/testplanner Testplanner] || [[Quality/QA-tools/Testplanner|Link]] || Kyösti Ranto || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [http://gitorious.org/qa-tools/eat eat - enables automated testing] || [[Quality/QA-tools/Eat|Link]] || Timo Härkönen || Timo Mäkimattila&lt;br /&gt;
|- &lt;br /&gt;
| [http://gitorious.org/qa-tools/ots ots - open testing system] || [[Quality/QA-tools/OTS|Link]] || Teemu Vainio || Tom Galvin&lt;br /&gt;
|-&lt;br /&gt;
| [http://gitorious.org/qa-tools/meego-ai MeeGo Automated installer] || [[Quality/QA-tools/Autotest-guide#Automatic_image_installations|Link]] || Timo Härkönen || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [http://gitorious.org/qa-tools/mcts MeeGo Core Test Suite] ||  ||Matti Salmi || Jeff Zheng&lt;br /&gt;
|- &lt;br /&gt;
| [http://gitorious.org/qa-tools/mnts MeeGo Netbook Test Suite] ||  ||Jeff Zheng || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [http://gitorious.org/qa-tools/qtuitest-mbt-adapter Model-Based Testing adapter for qtuitest] || [[Quality/QA-tools/qtuitest-mbt-adapter|Link]]  ||Riku Halonen || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [http://gitorious.org/min MIN test framework] || [[Quality/QA-tools/Min|Link]] || Sampo Saaristo || Timo Mäkimattila&lt;br /&gt;
|-&lt;br /&gt;
| [http://gitorious.org/TDriver Testability Driver] || [[Quality/QA-tools/TDriver|Link]] || Petri Kiiskinen || Tatu Lahtela&lt;br /&gt;
|-&lt;br /&gt;
| [http://gitorious.org/qa-tools/rich-core Rich Core dumper] || || Riku Halonen || Sami Lahtinen&lt;br /&gt;
|-&lt;br /&gt;
| [http://gitorious.org/qa-tools/crash-reporter Crash Reporter] || || Riku Halonen || Raimo Gratseff&lt;br /&gt;
|-&lt;br /&gt;
| [http://gitorious.org/qa-tools/crash-reporter-settings-public Crash Reporter settings] || || Riku Halonen || N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See the rest of our team members and our collaboration spaces [[Quality/QA-tools#Team_Members_and_Collaboration_Spaces|below]]. If you are interested in the user experience work regarding these tools, you can find more information [[Quality/QA-tools/User experience|here]].&lt;br /&gt;
&lt;br /&gt;
== Release Practices ==&lt;br /&gt;
&lt;br /&gt;
Here's the workflow for QA-tools release practices.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|'''Role'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| Developer || Anyone who wants to participate in qa-tools development &lt;br /&gt;
|-&lt;br /&gt;
| VCS Maintainer || Component owner who has commit rights in version control system (VCS)&lt;br /&gt;
|-&lt;br /&gt;
| Package Maintainer || Integrator whose responsibility is the OBS packaging&lt;br /&gt;
|-&lt;br /&gt;
| Release Management || Third party who is responsible of trunk:testing releases(?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:Release.png]]&lt;br /&gt;
&lt;br /&gt;
Kivio file:&lt;br /&gt;
[[File:Release.flw]]&lt;br /&gt;
&lt;br /&gt;
# Developer creates merge request(s) in gitorious.&lt;br /&gt;
# VCS Maintainer tests and accepts merge requests.&lt;br /&gt;
# VCS Maintainer checks/updates change logs.&lt;br /&gt;
# VCS Maintainer tags a version.&lt;br /&gt;
# VCS maintainer sends email to [http://lists.meego.com/pipermail/meego-qa/ meego-qa mailing list] based on the following template&lt;br /&gt;
Topic: Integration request: package-name version&lt;br /&gt;
 PACKAGE: package-name&lt;br /&gt;
 TAG: tag name&lt;br /&gt;
 URL: link to sources&lt;br /&gt;
 CHANGES: short description of changes containing bugs.meego.com bug numbers of fixed bugs&lt;br /&gt;
# Package maintainer updates the OBS package.&lt;br /&gt;
# Package maintainer tests the OBS package.&lt;br /&gt;
# If the package belongs to QA Tools repo and passes testing, Package Maintainer may accept it. If the package belongs to trunk:testing, Package Maintainer creates a promotional request to Release Management.&lt;br /&gt;
# Host side tools are updated to tools:testing after verifying functionality&lt;br /&gt;
# Package maintainer replies to meego-qa list about the actions done with the updated package. e.g. 'Updated in devel:quality and sent promotion request to testing'&lt;br /&gt;
# Release Management accepts the package. Or not.&lt;br /&gt;
&lt;br /&gt;
Bugzilla workflow: [[Bugzilla/how-report-bugs]]&lt;br /&gt;
&lt;br /&gt;
=== Release checklist ===&lt;br /&gt;
To make sure fixes are released without delay, check that the following conditions are met&lt;br /&gt;
&lt;br /&gt;
# Change logs are updated and contain relevant references to MeeGo bugzilla&lt;br /&gt;
# Created obs request include fixes bug numbers from MeeGo bugzilla&lt;br /&gt;
# Bugzilla items listed in changes are set as resolved&lt;br /&gt;
# Spec file matches [[Packaging/Guidelines|MeeGo packaging guidelines]]&lt;br /&gt;
# Rpmlint warnings are either fixed or explained by comments in the spec file. e.g. eat packages install files into root's home and the reasoning for it needs to be explained&lt;br /&gt;
# Host side tool packages use the same source tar ball to produce debian and rpm packages&lt;br /&gt;
&lt;br /&gt;
== Features and Bugs ==&lt;br /&gt;
&lt;br /&gt;
Want to report an feature idea or bug to us? - [http://bugs.meego.com/enter_bug.cgi?product=Development%20Tools Please do it here]&lt;br /&gt;
 &lt;br /&gt;
* [http://bugs.meego.com/buglist.cgi?query_format=advanced&amp;amp;order=Importance&amp;amp;bug_status=ASSIGNED&amp;amp;component=eat&amp;amp;component=min&amp;amp;component=ots&amp;amp;component=TDriver&amp;amp;component=testdefinition&amp;amp;component=Testplanner&amp;amp;component=testrunner%20UI&amp;amp;component=testrunner-lite&amp;amp;classification=MeeGo%20Platform&amp;amp;product=Development%20Tools Assigned bugs and features - Working on it]&lt;br /&gt;
* [http://bugs.meego.com/buglist.cgi?query_format=advanced&amp;amp;order=Importance&amp;amp;bug_status=NEW&amp;amp;bug_status=NEEDINFO&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=WAITING%20FOR%20UPSTREAM&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;component=eat&amp;amp;component=min&amp;amp;component=ots&amp;amp;component=TDriver&amp;amp;component=testdefinition&amp;amp;component=Testplanner&amp;amp;component=testrunner%20UI&amp;amp;component=testrunner-lite&amp;amp;classification=MeeGo%20Platform&amp;amp;product=Development%20Tools All open features and bugs in priority order]&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
This section will contain links to various guides and user documentation. See [[Quality/QA-tools#Tools_and_Maintainers|the wiki pages of the tools]] for tool-specific documentation.&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/Autotest-guide|Autotest-Guide]]&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
&lt;br /&gt;
Meetings will be held weekly on Tuesdays 12:00 UTC in &amp;lt;code&amp;gt;#meego-meeting on irc.freenode.net&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/Meetings|Meeting agendas and minutes]]&lt;br /&gt;
&lt;br /&gt;
== Team Members and Collaboration Spaces==&lt;br /&gt;
&lt;br /&gt;
The current team members are (in no particular order):&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Role'''&lt;br /&gt;
| '''Affiliation'''&lt;br /&gt;
| '''IRC nickname'''&lt;br /&gt;
|- &lt;br /&gt;
| Ville Ilvonen || Team lead (act.) || Nokia || vilvo&lt;br /&gt;
|-&lt;br /&gt;
| Riku Halonen || Team member || Nokia || rikhalon&lt;br /&gt;
|-&lt;br /&gt;
| Kari Sievi || Team member || Digia || sievi&lt;br /&gt;
|-&lt;br /&gt;
| Timo Härkönen || Team member || Digia || timoph  &lt;br /&gt;
|-&lt;br /&gt;
| Carol Rus || Team member || Digia || carrus  &lt;br /&gt;
|-&lt;br /&gt;
| Sami Lahtinen || Team member || Digia || slahtinen  &lt;br /&gt;
|-&lt;br /&gt;
| Raimo Gratseff || Team member || Digia || rrraimo  &lt;br /&gt;
|-&lt;br /&gt;
| Kyösti Ranto || Team member || Digia || kyranto&lt;br /&gt;
|-&lt;br /&gt;
| Arto Sinnelä || Team member || Digia || asinnela&lt;br /&gt;
|-&lt;br /&gt;
| Joonas Kylänpää || Team member || Digia || Kaadlajk&lt;br /&gt;
|-&lt;br /&gt;
| Timo Mäkimattila || Team member || Digia || timakima&lt;br /&gt;
|-&lt;br /&gt;
| Elias Luttinen || Team member || Digia || eluttine&lt;br /&gt;
|-&lt;br /&gt;
| Ville Niutanen || Team member || Digia || Villen&lt;br /&gt;
|-&lt;br /&gt;
| Esa-Pekka Miettinen || Team member || Digia || E-P&lt;br /&gt;
|-&lt;br /&gt;
| Vesa Poikajärvi || Team member || Digia || vesse&lt;br /&gt;
|-&lt;br /&gt;
| Sampo Saaristo || Team member || Sofica || sampos&lt;br /&gt;
|-  &lt;br /&gt;
| Ling Yu || Team member || Intel || -&lt;br /&gt;
|-&lt;br /&gt;
| Jing Wang || Team member || Intel || -&lt;br /&gt;
|-  &lt;br /&gt;
| Teemu Vainio || Team member || Ixonos || tvainio&lt;br /&gt;
|-  &lt;br /&gt;
| Tuomo Mäkinen || Team member || Ixonos || -&lt;br /&gt;
|-  &lt;br /&gt;
| Jouni Leppäkases || Team member || Ixonos || jouni&lt;br /&gt;
|-  &lt;br /&gt;
| Tom Galvin || Team member || Ixonos || -&lt;br /&gt;
|-  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Team communication is in English. Our collaboration spaces are:&lt;br /&gt;
* [http://lists.meego.com/listinfo/meego-dev meego-dev@meego.com mailing list], please prefix with 'QA-tools' for team related topics.&lt;br /&gt;
** Please also poke team members or Ville Ilvonen either by email or on IRC because of high traffic @ meego-dev&lt;br /&gt;
* [http://lists.meego.com/listinfo/meego-qa meego-qa@lists.meego.com mailing list]&lt;br /&gt;
* [http://webchat.freenode.net/?channels=meego-qa-tools #meego-qa-tools IRC channel on irc.freenode.net]&lt;br /&gt;
* Gitorious team, http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* [http://www.youtube.com/user/meegoqatools Youtube channel for demo videos]&lt;br /&gt;
* MeeGo OBS - devel:quality&lt;br /&gt;
* This wiki area&lt;br /&gt;
* [[Quality/QA-tools/ServiceOS|ServiceOS]]&lt;br /&gt;
* [[Quality/QA-tools/PXEInstall|PXEInstallation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:QA]]&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Main_Page"/>
				<updated>2010-09-21T13:23:55Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* Yearly MeeGo Conference */  Yearly -&amp;gt; Annual&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Structure and Governance =&lt;br /&gt;
&lt;br /&gt;
MeeGo is an open source project led by the MeeGo Technical Steering Group (TSG). The governance model is based on meritocracy and the best practices and values of the Open Source culture. The MeeGo project lives under the auspices of the Linux Foundation. &lt;br /&gt;
&lt;br /&gt;
* [http://meego.com/about/governance MeeGo Project Structure and Governance Overview]&lt;br /&gt;
&lt;br /&gt;
Anyone can attend the bi-weekly [[Technical Steering Group meetings]] to learn more about the decisions being made in the MeeGo project.&lt;br /&gt;
&lt;br /&gt;
== MeeGo Project Functions ==&lt;br /&gt;
&lt;br /&gt;
* [[Community Office]]&lt;br /&gt;
* [[Localization team|Localization]]&lt;br /&gt;
* [http://meego.com/about/governance/program-office Program Office]&lt;br /&gt;
* [[Core_OS_Program | Core OS Program]]&lt;br /&gt;
* [[Quality]]&lt;br /&gt;
* [[Release_Engineering|Release Engineering]]&lt;br /&gt;
* [http://meego.com/about/governance/ui-design User Interface Design]&lt;br /&gt;
* [[SDK]]&lt;br /&gt;
&lt;br /&gt;
= User =&lt;br /&gt;
&lt;br /&gt;
* [[MeeGo 1.0 Netbook FAQ]]&lt;br /&gt;
* [http://meego.com/devices/netbook/installing-meego-your-netbook Install MeeGo 1.0 on your netbook]&lt;br /&gt;
* [[Devices|Supported devices]]&lt;br /&gt;
&lt;br /&gt;
= Developer =&lt;br /&gt;
== Developer Guide ==&lt;br /&gt;
&lt;br /&gt;
* [[Developer Guide]]&lt;br /&gt;
* [[Build_Infrastructure | Build Infrastructure]]&lt;br /&gt;
&lt;br /&gt;
Other documents:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Document&lt;br /&gt;
! Variety (Version)&lt;br /&gt;
! Architectures&lt;br /&gt;
|-&lt;br /&gt;
|Instructions for [[ARM|ARM based devices (N900, N8x0, Beagleboard, MSM/QSD + QEMU)]]&lt;br /&gt;
|All&lt;br /&gt;
|ARM&lt;br /&gt;
|-&lt;br /&gt;
|Instructions for [[MeeGo_1.0_Netbook_VirtualBox|VirtualBox]]&lt;br /&gt;
|Netbook (1.0)&lt;br /&gt;
|Intel&lt;br /&gt;
|-&lt;br /&gt;
|Instructions for [[MeeGo SDK on Windows with VirtualBox]]&lt;br /&gt;
|All&lt;br /&gt;
|All&lt;br /&gt;
|-&lt;br /&gt;
|Tips for [[Developing With The Aava]]&lt;br /&gt;
|Handset/Aava&lt;br /&gt;
|Intel&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Release Process ==&lt;br /&gt;
The MeeGo Release Process includes:&lt;br /&gt;
* [[Release_Engineering/Release_Timeline|MeeGo releases every 6 months]]&lt;br /&gt;
* [[Release_Engineering/Process|Nightly builds for developers and weekly releases will be available]]&lt;br /&gt;
&lt;br /&gt;
= Community =&lt;br /&gt;
&lt;br /&gt;
== Contributing to MeeGo ==&lt;br /&gt;
* Read our [[Community guidelines]]: [[Wiki contribution guidelines|Wiki]], [[Mailing list guidelines|mailing list]], [[Forum/Guidelines|forum]], and [[Community guidelines|more]].&lt;br /&gt;
* [[Community communication|Participate in our forums, mailing lists, and more]].&lt;br /&gt;
* [http://meego.com/about/contribution-guidelines Contribute to MeeGo].&lt;br /&gt;
&lt;br /&gt;
See also [[Who's who]].&lt;br /&gt;
&lt;br /&gt;
== Regular Meetings ==&lt;br /&gt;
&lt;br /&gt;
[[MeeGo-Meeting IRC Schedule]]&lt;br /&gt;
&lt;br /&gt;
The following groups have regular meetings, see their respective pages for details.&lt;br /&gt;
&lt;br /&gt;
* [[Technical Steering Group meetings]]&lt;br /&gt;
* [[Community Working Group meeting]]&lt;br /&gt;
* [[Localization team]]&lt;br /&gt;
&lt;br /&gt;
== Annual MeeGo Conference ==&lt;br /&gt;
&lt;br /&gt;
The [http://conference2010.meego.com/ MeeGo Conference 2010] will be held at Aviva Stadium in Dublin, Ireland, November 15-17th, 2010. Visit the [[MeeGo Conference 2010]] wiki page for planning details.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
* [[MeeGo FAQ]]&lt;br /&gt;
* [[Glossary|Glossary and Acronyms]]&lt;br /&gt;
* [[Community guidelines]]&lt;br /&gt;
* [[Special:PopularPages|Popular Wiki Pages]]&lt;br /&gt;
* [[Special:MostLinkedPages|Most Linked-to Pages]]&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Image_Creation</id>
		<title>Image Creation</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Image_Creation"/>
				<updated>2010-08-18T14:46:54Z</updated>
		
		<summary type="html">&lt;p&gt;Vesse: /* libgcc related issues */ Typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview = &lt;br /&gt;
&lt;br /&gt;
This is the main Image Creator developer's guide.  For a more simplistic, step-by-step document, go to: [[Image Creation For Beginners]].&lt;br /&gt;
&lt;br /&gt;
The tool used to create MeeGo images is something called &amp;quot;MIC2&amp;quot; (for distinguishing from obsolete MIC - Moblin Image Creator). MIC stands for MeeGo Image Creator. It is composed of a series of tools to create images, convert images and do some development work on MeeGo. MIC2 is based primarily on Fedora livecd-tools and appliance-tools.&lt;br /&gt;
&lt;br /&gt;
With MIC2 tools, users can create different types of images for different purposes, including live CD images, live USB images, raw images for KVM, VMDK images for Vmware, vdi images for VirtualBox, loop images for IVI platforms, NAND images for Moorestown platforms, ubi images for N900, fs image for MeeGo developers. Also, users can use MIC2 tools to manipulate images like transforming an image from a virtual machine to a live image, and providing a chroot environment based on an existing live image. With these features, developers can do development work on a host virtual machine running MeeGo or a Meego chroot environment, and transfer the resulting new live image to a target device for final debug/verification.&lt;br /&gt;
&lt;br /&gt;
This document discusses only features, usage guide, and known issues.&lt;br /&gt;
&lt;br /&gt;
= Features =&lt;br /&gt;
&lt;br /&gt;
MIC2 offers these major tools:&lt;br /&gt;
* mic-image-creator: create images. &lt;br /&gt;
* mic-image-convertor: convert a raw/vmdk/vdi/live image into a live image. &lt;br /&gt;
* mic-chroot: provide a MeeGo environment from a live/loop image for development, it also can translate that chroot file system into a live image.&lt;br /&gt;
* mic-image-writer: write a MeeGo image to a USB disk. This is a safe alternative to dd.&lt;br /&gt;
&lt;br /&gt;
The following support is provided:&lt;br /&gt;
&lt;br /&gt;
* Supports mainstream Linux distros. MIC2 has been thoroughly tested on these distributions:&lt;br /&gt;
** Meego&lt;br /&gt;
** Fedora (Fedora 10 and above)&lt;br /&gt;
** Opensuse (&amp;gt; OpenSUSE 11.1)&lt;br /&gt;
** and Ubuntu &amp;gt; 9.04&lt;br /&gt;
* Supports various types of images: livecd, liveusb, loop, raw, vmdk, nandmrst, vdi, fs, ubi&lt;br /&gt;
* Supports image coversion from virtual machine/live images to live images.&lt;br /&gt;
* Uses kickstart (.ks) files for image creation. Through this, users can specify which software repositories to use, which packages to install and basic system configuration directives.  Please refer to http://fedoraproject.org/wiki/Anaconda/Kickstart for more information about kickstart configuration files.&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
To be able to use MIC2, the following packages must be available on your system. (Most of the packages are installed by default, depending on the distribution.):&lt;br /&gt;
&lt;br /&gt;
* yum&lt;br /&gt;
* rpm&lt;br /&gt;
* kpartx&lt;br /&gt;
* parted&lt;br /&gt;
* syslinux&lt;br /&gt;
* isomd5sum&lt;br /&gt;
* kvm&lt;br /&gt;
* zlib-devel(for compiling)&lt;br /&gt;
* python-devel(for installation) &lt;br /&gt;
&lt;br /&gt;
You should load these modules as well, if not loaded automatically by the kernel:&lt;br /&gt;
&lt;br /&gt;
* squashfs&lt;br /&gt;
* squashfs-tools&lt;br /&gt;
* dm_snapshot&lt;br /&gt;
* loop &lt;br /&gt;
&lt;br /&gt;
Specific packages for Fedora:&lt;br /&gt;
&lt;br /&gt;
* pykickstart&lt;br /&gt;
* device-mapper &lt;br /&gt;
&lt;br /&gt;
Specific packages for Ubuntu 8.10:&lt;br /&gt;
&lt;br /&gt;
* python-celementtree&lt;br /&gt;
* python-elementtree&lt;br /&gt;
* dmsetup&lt;br /&gt;
&lt;br /&gt;
=== Installing requirements for Ubuntu 10.04 ===&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install yum rpm kpartx parted syslinux isomd5sum kvm zlib1g-dev squashfs-tools python2.6-dev&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
We currently build MIC2 binary rpms/debs for many popular Linux distributions, including Fedora 11, Fedora 12, Ubuntu 9.04, Ubuntu 9.10, Ubuntu 10.04, OpenSUSE 11.1, OpenSUSE 11.2 and Debian 5.0. Please go to http://repo.meego.com/tools/repos/ to get repository URL corresponding to your Linux distribution then add it into your repo or package source for installation and update later. If your distribution isn't in support list, please install MIC2 from git source.&lt;br /&gt;
&lt;br /&gt;
=== From Binary Packages ===&lt;br /&gt;
&lt;br /&gt;
* '''Installation Steps For Fedora 11 and Fedora 12'''&lt;br /&gt;
&lt;br /&gt;
1. Add MIC2 repo&lt;br /&gt;
&lt;br /&gt;
For Fedora 11, save [[Media:Meego-devel-tools-f11.repo|Meego-devel-tools-f11.repo]] as /etc/yum.repos.d/meego-devel-tools-f11.repo&lt;br /&gt;
&lt;br /&gt;
For Fedora 12, save [[Media:Meego-devel-tools-f12.repo|Meego-devel-tools-f12.repo]] as /etc/yum.repos.d/meego-devel-tools-f12.repo&lt;br /&gt;
&lt;br /&gt;
2. sudo yum install mic2 --nogpgcheck&lt;br /&gt;
&lt;br /&gt;
* '''Update Steps For Fedora 11 and Fedora 12'''&lt;br /&gt;
&lt;br /&gt;
You can use the below command to get the latest mic2 package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo yum update mic2 --nogpgcheck&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Installation Steps For Ubuntu 9.04, Ubuntu 9.10, Ubuntu 10.04 and Debian 5.0'''&lt;br /&gt;
&lt;br /&gt;
1. Add package source&lt;br /&gt;
&lt;br /&gt;
For Ubuntu 9.04, add the below line to /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://repo.meego.com/tools/repos/ubuntu/9.04/ /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: also ensure your libsqlite3-0 package is 3.6.10-1ubuntu0.2 or later.  You may need to enable recommended updates on the update tab of System / Administration / Software Sources.&lt;br /&gt;
&lt;br /&gt;
For Ubuntu 9.10, add the below line to /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://repo.meego.com/tools/repos/ubuntu/9.10/ /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Ubuntu 10.04, add the below line to /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://repo.meego.com/tools/repos/ubuntu/10.04/ /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Debian 5.0, add the below line to /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://repo.meego.com/tools/repos/debian/5.0/ /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
You should see the following error:&lt;br /&gt;
W: GPG error: http://repo.meego.com  Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 0BC7BEC479FC1F8A&lt;br /&gt;
&lt;br /&gt;
To add the repository public key use the following command:&lt;br /&gt;
:gpg --keyserver subkeys.pgp.net --recv 0BC7BEC479FC1F8A&lt;br /&gt;
:gpg --export --armor 0BC7BEC479FC1F8A | sudo apt-key add -&lt;br /&gt;
&lt;br /&gt;
3. sudo apt-get install syslinux=3.85&lt;br /&gt;
&lt;br /&gt;
4. sudo apt-get install mic2&lt;br /&gt;
&lt;br /&gt;
* '''Update Steps For Ubuntu 9.04, Ubuntu 9.10, Ubuntu 10.04  and Debian 5.0'''&lt;br /&gt;
&lt;br /&gt;
1. sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
2. sudo apt-get install mic2&lt;br /&gt;
&lt;br /&gt;
* '''Installation Steps For OpenSUSE 11.1 and OpenSUSE 11.2'''&lt;br /&gt;
&lt;br /&gt;
1. Add repos&lt;br /&gt;
&lt;br /&gt;
For OpenSUSE 11.1:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo zypper addrepo http://repo.meego.com/tools/repos/opensuse/11.1/ meego-tools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For OpenSUSE 11.2:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo zypper addrepo http://repo.meego.com/tools/repos/opensuse/11.2/ meego-tools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. sudo zypper install mic2&lt;br /&gt;
&lt;br /&gt;
* '''Update Steps For OpenSUSE 11.1 and OpenSUSE 11.2'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo zypper update mic2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== From Stable Git Source Releases ===&lt;br /&gt;
&lt;br /&gt;
You can get the latest stable release of MIC2 from the tag section in http://meego.gitorious.org/meego-developer-tools/image-creator.  Click on the &amp;quot;Source tree&amp;quot; link on the top of the screen.  There will be a list of tags on the right hand side.&lt;br /&gt;
&lt;br /&gt;
You should follow the below steps to install it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://gitorious.org/meego-developer-tools/image-creator.git&lt;br /&gt;
cd image-creator&lt;br /&gt;
git checkout 0.17  #check Gitorious for the most recent tag&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== From Development Git Tree ===&lt;br /&gt;
&lt;br /&gt;
Note: MIC2 GIT tree has latest-and-greatest source, so stability is not guaranteed.  If you run into errors, please use a 'Stable Release' instead before filing a bug.&lt;br /&gt;
&lt;br /&gt;
You need to follow the below steps to git clone MIC2:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://gitorious.org/meego-developer-tools/image-creator.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Build and install:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd image-creator&lt;br /&gt;
make clean&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should add the repo for mic2 then run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ./tools/mic-check-alldeps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to check/install all the depended packages, otherwise mic2 can't work normally.&lt;br /&gt;
&lt;br /&gt;
== Running mic-image-creator ==&lt;br /&gt;
&lt;br /&gt;
Configuration of images is based on kickstart, the format used for unattended installation in Fedora and Redhat.&lt;br /&gt;
&lt;br /&gt;
Super user privileges are needed. The tool is more or less self-documented, use the --help option to see options.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-creator --help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating Supported Image Types ===&lt;br /&gt;
&lt;br /&gt;
KickStart (.ks) configuration files are passed to MIC2 to create tailored images.  KickStart files specify what repos to pull from, what packages to include, what post-scripts to run and what type of images to create.&lt;br /&gt;
&lt;br /&gt;
To obtain the official Meego .ks files, go here: TO-DO-LINK&lt;br /&gt;
&lt;br /&gt;
'''Create Livecd Image'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-creator --config=default.ks --format=livecd --cache=mycache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This tells image-creator to use the kickstart file default.ks to obtain info about which packages to download and include in the image, and --cache is the directory on your local machine which will host a cache of these packages. The cache is very useful if you are remote to the server and reduces the amount of downloaded packages next time you create an image. Next time the command is run, this cache will simply be 'updated' if there are changes, rather than re-downloading from the repositories again.&lt;br /&gt;
&lt;br /&gt;
The output of this command will be a file named meego-1.0-default-XX.iso created. This ISO image is a hybrid image and can be either written to a disk device or burned onto a cd.&lt;br /&gt;
&lt;br /&gt;
To burn it onto a USB stick, just run the following command, assuming the USB stick is /dev/sdb in your system:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-writer meego-1.0-default-XX.iso&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Create Moorestown NAND Image'''&lt;br /&gt;
&lt;br /&gt;
!! This still needs to be done !! &lt;br /&gt;
 Please refer to the section dedicated to this topic below.&lt;br /&gt;
&lt;br /&gt;
'''Create Liveusb Image'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-creator --config=default.ks --format=liveusb --cache=mycache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A file named meego-1.0-default-XX.usbimg will be created. To burn it onto a USB stick, run the following command, assuming the USB stick is /dev/sdb in your system:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-writer meego-1.0-default-XX.usbimg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This image has a FAT file system and can be mounted easily on Windows and other OSes.&lt;br /&gt;
&lt;br /&gt;
'''Create Liveusb Image Interactively'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-creator --config=default.ks --format=liveusb --interactive --cache=mycache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It directly creates a MeeGo live usb stick.&lt;br /&gt;
&lt;br /&gt;
Liveusb image can be created in two different ways, interactive and non-interactive (default). When running MIC2 in a non-interactive mode, MIC2 creates a USB images file that can be copied directly into a USB stick. The non-interactive mode can be used for daily build or automated testing. The interactive mode will write the images onto a USB disk, it will detect if a USB stick is available and detects and verifies a partition is available. If two or more USB devices are present, you will be asked to select the target device. This way won't destroy existing content of USB stick unless it founds no appropriate partition, end user should use it to create live USB.&lt;br /&gt;
&lt;br /&gt;
'''Create Loop Image'''&lt;br /&gt;
&lt;br /&gt;
This is the simplest image format available. Such images can be loop mounted and chrooted into, for example, to build applications or for debugging purposes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-creator --config=default.ks --format=loop --cache=mycache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A file named meego-1.0-default-XX.img is created. You can use below to mount it and chroot into it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mount -o loop meego-1.0-default-XX.img /mnt&lt;br /&gt;
sudo chroot /mnt su -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Create KVM Image'''&lt;br /&gt;
&lt;br /&gt;
Can be used with QEMU or other VMM applications to launch MeeGo as a virtualized instance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-creator --config=default.ks --format=raw --cache=mycache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A file named meego-1.0-default-XX folder with a meego-1.0-default-XX-sda.raw image is created. For optimal results, use this feature in a machine with VT support and enable it in the BIOS.&lt;br /&gt;
&lt;br /&gt;
If you use Fedora or openSUSE, run the following command to launch the image into MeeGo KVM virtual machine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo qemu-kvm -m 512 -boot c -hda meego-1.0-default-XX-sda.raw -std-vga&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use Ubuntu, run the following command launch image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo kvm -m 512 -boot c -hda meego-1.0-default-XX-sda.raw&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Create VMDK Image'''&lt;br /&gt;
&lt;br /&gt;
VMDK images can be loaded into Vmware or Vmware player. MIC2 also generates a VMX file that has image configuration and can be used to launch the image in Vmware by just clicking the file. If you have vmplayer, it should open automatically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-creator --config=default.ks --format=vmdk --cache=mycache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A file named meego-1.0-default-XX folder with both meego-1.0-default-XX-sda.vmdk image and meego-1.0-default-XX-sda.vmx is created. Just run vmware or vmware player, and select the generated vmx file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== KickStart Files (configuration files used for image creation) ===&lt;br /&gt;
&lt;br /&gt;
KickStart (.ks) configuration files are passed to MIC2 to create tailored images.  KickStart files specify what repos to pull from, what packages to include, what post-scripts to run and what type of images to create.&lt;br /&gt;
&lt;br /&gt;
For more details about the kickstart format, see http://fedoraproject.org/wiki/Anaconda/Kickstart.&lt;br /&gt;
&lt;br /&gt;
Note that not all KickStart directives and options are supported for creating Meego images. MIC2 also adds some specific directives and options.  More explained below.&lt;br /&gt;
&lt;br /&gt;
====Official Meego .ks files====&lt;br /&gt;
&lt;br /&gt;
The official Meego .ks files are here:&lt;br /&gt;
&lt;br /&gt;
*For ARM based Nokia N900: http://repo.meego.com/MeeGo/devel/n900/images/&lt;br /&gt;
*For Intel Atom based netbook and handset (Moorestown):  http://repo.meego.com/MeeGo/devel/trunk/images/&lt;br /&gt;
&lt;br /&gt;
You can download and use them as a base for the Meego images you create.  Modify these .ks files as you wish to create tailored images.&lt;br /&gt;
&lt;br /&gt;
====Modifying your .ks====&lt;br /&gt;
&lt;br /&gt;
Developers may want to modify the .ks files to create their own custom images.  Here are the main options and sections within the .ks file.&lt;br /&gt;
&lt;br /&gt;
You can also find in-depth .ks option information here: http://fedoraproject.org/wiki/Anaconda/Kickstart#Chapter_2._Kickstart_Options&lt;br /&gt;
&lt;br /&gt;
'''''Partition, Setup and Bootloader options'''''&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lang en_US.UTF-8&lt;br /&gt;
keyboard us&lt;br /&gt;
timezone --utc America/New_York&lt;br /&gt;
auth --useshadow --enablemd5&lt;br /&gt;
part / --size 1500 --ondisk sda --fstype=ext3&lt;br /&gt;
rootpw meego&lt;br /&gt;
xconfig --startxonboot&lt;br /&gt;
bootloader --timeout=0 --append=&amp;quot;quiet&amp;quot;&lt;br /&gt;
desktop --autologinuser=meego  --defaultdesktop=xfce&lt;br /&gt;
user --name meego  --groups audio,video --password meego&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are mostly self-explanatory and set up important things such as partition size, filesystem type, kernel paramters, etc.  You can change these depending on what your needs are.&lt;br /&gt;
&lt;br /&gt;
'''''Repos'''''&lt;br /&gt;
&lt;br /&gt;
This is where you can specify the yum repositories that you want MIC2 to search and pull your packages from to make up your image.  You can add official Meego repos, other remote repos, or your own local repos on your dev machine.&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This is a comment&lt;br /&gt;
&lt;br /&gt;
# My first repo&lt;br /&gt;
repo   --name=trunk  --baseurl=http://mytrunk.myrepo.com&lt;br /&gt;
&lt;br /&gt;
# My second repo&lt;br /&gt;
#repo   --name=&amp;lt;repo-name-2&amp;gt;  --baseurl=&amp;lt; url | local-repo-dir &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' --name of the repo can be any unique alphanumeric name you give your repo, it can be anything.  Just make sure you don't use the same name twice for any of the listed repos, remember they have to be unique.&lt;br /&gt;
&lt;br /&gt;
To create a repo you can point to on your local developer machine, you can run the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
createrepo -d &amp;lt;local-dir&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where 'local-dir' is a local directory on your machine that contains the rpms you want include in your local directory.&lt;br /&gt;
&lt;br /&gt;
'''''Adding Packages and Package Groups'''''&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%packages&lt;br /&gt;
&lt;br /&gt;
# Example adding pkg groups&lt;br /&gt;
&lt;br /&gt;
@Core&lt;br /&gt;
@X for Netbooks&lt;br /&gt;
@Base&lt;br /&gt;
@Development Tools&lt;br /&gt;
@&amp;lt;my-PkgGroup1&amp;gt;&lt;br /&gt;
@&amp;lt;my-PkgGroup2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Example adding individual pkgs&lt;br /&gt;
&lt;br /&gt;
kernel-netbook&lt;br /&gt;
xorg-x11-server-Xorg-setuid&lt;br /&gt;
carrick&lt;br /&gt;
xorg-x11-drv-evtouch&lt;br /&gt;
&amp;lt;my-pkg-1&amp;gt;&lt;br /&gt;
&amp;lt;my-pkg-2&amp;gt;&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This specifies exactly what packages will be included in your image.  Package groups can be specified with a &amp;quot;@&amp;quot; preceding it, as you can see from the examples above.  Package groups are defined in the 'repodata' section of a repo, under a 'comps*.xml' file.  Defined therein are package group names, and what packages are included in each package group.  The Meego package groups are standard, and cannot be changed.  You can, however, define your own package groups in your own non-Meego repos if you are using those.  &lt;br /&gt;
&lt;br /&gt;
Please see here for more info on defining package groups in repositories: TO-DO-LINK&lt;br /&gt;
&lt;br /&gt;
You can also add individual package names to be included in the image as you can see from the second part in the above example.&lt;br /&gt;
&lt;br /&gt;
'''''Important Note about how MIC2 picks a package when different versions are available'''''&lt;br /&gt;
&lt;br /&gt;
A common problem is that, let's say, a packageA has more than one version residing in a repo(s) that your .ks is pointing to.&lt;br /&gt;
&lt;br /&gt;
How will the MIC2 know which one to pick?&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
&lt;br /&gt;
There exists in the repo(s) these different versions of PackageA:&lt;br /&gt;
&lt;br /&gt;
PackageA-1.0&lt;br /&gt;
&lt;br /&gt;
PackageA-2.0&lt;br /&gt;
&lt;br /&gt;
PackageA-3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MIC2 will pick the PackageA with the highest version number (PackageA-3.0 in this case).&lt;br /&gt;
&lt;br /&gt;
There is one way to get around that, and that is to set the 'Epoch' version within a package .spec file.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Example (works in both .spec and .yaml file)&lt;br /&gt;
&lt;br /&gt;
Name: &amp;lt;name&amp;gt;&lt;br /&gt;
Summary: &amp;lt;summary&amp;gt;&lt;br /&gt;
Epoch: 1&lt;br /&gt;
Version: &amp;lt;version&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MIC2 will first look to compare the 'Epoch' version of the packages.  All Meego official packages do not include an 'Epoch' version, so if you set the 'Epoch' number within your .spec file to any positive integer, no matter if your package version is smaller, MIC2 will choose your package.&lt;br /&gt;
&lt;br /&gt;
So back to our example.&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
&lt;br /&gt;
PackageA-1.0 (Epoch not set)&lt;br /&gt;
&lt;br /&gt;
PackageA-2.0 (Epoch = 1)&lt;br /&gt;
&lt;br /&gt;
PackageA-3.0 (Epoch not set)&lt;br /&gt;
&lt;br /&gt;
MIC2 will choose PackageA-2.0 in this case.  And it follow that:&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
&lt;br /&gt;
PackageA-1.0 (Epoch=100)&lt;br /&gt;
&lt;br /&gt;
PackageA-2.0 (Epoch = 1)&lt;br /&gt;
&lt;br /&gt;
PackageA-3.0 (Epoch not set)&lt;br /&gt;
&lt;br /&gt;
MIC2 will choose PackageA-1.0.&lt;br /&gt;
&lt;br /&gt;
Remember that Meego packages will not have 'Epoch' set, so chances are that if you set 'Epoch' in your own package to any positive integer, it will be the one MIC2 chooses to pull down and include in an image.&lt;br /&gt;
&lt;br /&gt;
'''''Removing Packages'''''&lt;br /&gt;
&lt;br /&gt;
If you would like to make sure that a pkg is _not_ included, you can specify that with a '-' preceding the package name.&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%packages&lt;br /&gt;
&lt;br /&gt;
# Example pkg groups&lt;br /&gt;
&lt;br /&gt;
@Core&lt;br /&gt;
&lt;br /&gt;
# Example adding individual pkgs&lt;br /&gt;
&lt;br /&gt;
kernel-netbook&lt;br /&gt;
&lt;br /&gt;
# Example removing individual pkgs&lt;br /&gt;
&lt;br /&gt;
-carrick&lt;br /&gt;
-package-xyz&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with the above example, packages 'carrick' and 'package-xyz' will _not_ be included in the image.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' all packages that depend on the package you want to remove should also be removed, or else MIC2 will ignore your request to remove that package from an image.  E.g. if 'carrick' depends on 'package-xyz', and you specified only to remove 'package-xyz', and keep carrick, MIC2 will ignore the request to remove package-xyz (since carrick depends on it), and it includes both of these pgks in the image.&lt;br /&gt;
&lt;br /&gt;
'''''Post scripts'''''&lt;br /&gt;
&lt;br /&gt;
You can also specify post-scripts to be run after the image is installed.&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%post&lt;br /&gt;
&lt;br /&gt;
# Example - saving some space&lt;br /&gt;
rm -f /boot/initrd*&lt;br /&gt;
rm -f /core*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Example - Install working xorg.conf&lt;br /&gt;
if [ -f /usr/share/my.conf ]; then&lt;br /&gt;
    cp /usr/share/my.conf /etc/X11/xorg.conf&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Example - Tell alsa the correct audio card to use for your platform&lt;br /&gt;
echo -e &amp;quot;options snd-hda-intel index=0\noptions snd-timbi2s index=1&amp;quot; &amp;gt; /etc/modp&lt;br /&gt;
robe.d/alsa.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Proxy settings for the repos in .ks====&lt;br /&gt;
&lt;br /&gt;
An option you might find useful if you're behind a firewall is the --proxy flag for the &amp;quot;repo&amp;quot; definition. You can specify it in the .ks as follows:&lt;br /&gt;
&lt;br /&gt;
  repo --name=meego --baseurl=http://repo.meego.com/trunk/repo/ia32/os/ --proxy=http://proxyhost:proxyport/ --proxyuser=proxyusername&lt;br /&gt;
--proxypaswd=proxyuserpassword &lt;br /&gt;
&lt;br /&gt;
If you are behind a firewall, you don't need to set proxyuser and proxypasswd, like:&lt;br /&gt;
  &lt;br /&gt;
  repo --name=meego  --baseurl=http://repo.meego.com/trunk/repo/ia32/os/ --proxy=http://proxyhost:proxyport&lt;br /&gt;
&lt;br /&gt;
'''Note:''' You can also insert this in your sudoers config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
$ sudo visudo&lt;br /&gt;
&lt;br /&gt;
Add: Defaults env_keep += &amp;quot; no_proxy http_proxy .........&amp;quot; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
so sudo will adhere to the no_proxy and proxy settings.&lt;br /&gt;
&lt;br /&gt;
=== MIC2 Configuration file ===&lt;br /&gt;
&lt;br /&gt;
MIC2 options can be specified in a global configuration file ('''/etc/mic2/mic2.conf''') and local configuration file ('''$HOME/.mic2.conf''') where you can specify &lt;br /&gt;
* Repository configuration&lt;br /&gt;
* proxy settings&lt;br /&gt;
* cache directories and &lt;br /&gt;
* other variables &lt;br /&gt;
that you normally would have to re-type in your command-line. &lt;br /&gt;
&lt;br /&gt;
The two configuration files have the same format, /etc/mic2/mic2.conf is global, no matter whoever is running MIC2, this configuration file will be read first, $HOME/.mic2.conf is just valid for current user, every user can have their own settings.&lt;br /&gt;
The final configuration is a combination of two configuration files, options in '''$HOME/.mic2.conf''' will override those from '''/etc/mic2/mic2.conf'''. Options from command line have the highest priority. &lt;br /&gt;
If an option is specified on the command line, the same option in both configuration files, global and local will be ignored.&lt;br /&gt;
&lt;br /&gt;
Below is an example you can cut-and-paste, and reuse for your needs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[main]&lt;br /&gt;
cachedir=/home/user1/mycache&lt;br /&gt;
tmpdir=/home/user1/mystorage/tmp&lt;br /&gt;
outdir=/home/user1/mystorage&lt;br /&gt;
proxy=http://my.proxy.com:911/&lt;br /&gt;
no_proxy=localhost,127.0.0.0/8,.mysite.com,172.16.0.0/16&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''cachedir'' = directory where the cached repo(s) will reside.  With this variable set, you do not need to pass the --cache flag in the command-line.&lt;br /&gt;
&lt;br /&gt;
''tmpdir'' = temporary directory used by MIC2 when creating images.  With this variable set, you do not need to pass the --tmpdir flag in the command-line.&lt;br /&gt;
&lt;br /&gt;
''outdir'' = where your images will reside once they are created.  With this variable set, you do not need to pass the --outdir flag in the command-line.&lt;br /&gt;
&lt;br /&gt;
''proxy'' = specify your proxy if you're behind a behind a firewall.&lt;br /&gt;
&lt;br /&gt;
''no_proxy'' = specify what domains should not sure the proxy setting.&lt;br /&gt;
&lt;br /&gt;
''image_format'' = specify image format.&lt;br /&gt;
&lt;br /&gt;
''default_ks'' = specify a default kickstart file, there are several kickstart files provided in repository http://repo.meego.com/MeeGo/devel/trunk/repo/ia32/os/&lt;br /&gt;
&lt;br /&gt;
'''Note:''' When specifying proxy and no_proxy, you do not need to use the --proxy flag in your .ks files when referring to repos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In configuration files, you also can specify one or multiple repositories, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[trunk]&lt;br /&gt;
name=trunk&lt;br /&gt;
baseurl=http://repo.meego.com/MeeGo/devel/trunk/repo/ia32/os/&lt;br /&gt;
enabled=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once there is this reposiroty info in your configuration files, and both image_format and default_ks are set, you can just run &amp;quot;sudo mic-image-creator&amp;quot; to create a image, there isn't any extra argument needed.&lt;br /&gt;
&lt;br /&gt;
=== Use Bootstrap ===&lt;br /&gt;
&lt;br /&gt;
MIC2 highly depends on yum and librpm, but different Linux distributions used diffrent yum and librpm versions, so MIC2 has some compatibility issues on OpenSUSE, Ubuntu and Debian, bootstrap is just for fixing these compatibility issues.&lt;br /&gt;
&lt;br /&gt;
bootstrap is a minimal MeeGo file system, MIC2 can run very smoothly on it using chroot mode. You can use the below command to create a bootstrap:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-create-bootstrap -n trunk -k /your/repo/cache/path -r http://repo.meego.com/MeeGo/devel/trunk/repo/ia32/os/ -o /your/final/bootstrap&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
-n is used to specify repository name, if you have its cache before, it can reduce runtime dramatically to use it with -k option, -k is used to specify your repository cache dir, -r is used to specify MeeGo main repository.&lt;br /&gt;
&lt;br /&gt;
Once you created your bootstrap, you can use this bootstrap to run MIC2 as follows&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-creator --bootstrap=/your/final/bootstrap --format=livecd --config=default.ks --cache=/your/repo/cache/path&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can create and use bootstrap in one mic-image-creator run as follows&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-creator --build-bootstrap --bootstrap=/your/final/bootstrap --format=livecd --config=default.ks --cache=/your/repo/cache/path&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Running mic-image-writer ==&lt;br /&gt;
&lt;br /&gt;
mic-image-writer writes a Meego image to a USB disk. It is a safe alternative to dd. dd is really a very dangerous tool.&lt;br /&gt;
&lt;br /&gt;
mic-image-writer can run in both console mode and GUI mode. It can decide which mode to run, according to current system environment. You can also use a given option to force it to run in some other mode. Run 'mic-image-writer --help' to get usage information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Usage: mic-image-writer [options] [image file]&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
  -h, --help     Show this help message and exit&lt;br /&gt;
  -c, --console  Run in console mode&lt;br /&gt;
  -g, --gui      Run in GUI mod&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here is a run example in console mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo mic-image-writer meego-xxx.img&lt;br /&gt;
Available usb disk:&lt;br /&gt;
        [1] /dev/sdc: SanDisk USB Flash Drive&lt;br /&gt;
        [2] /dev/sdb: SanDisk U3 Cruzer Micro&lt;br /&gt;
Please choice [1..2] ? 2&lt;br /&gt;
Source: /myhome/meego-xxx.img&lt;br /&gt;
Target: /dev/sdb&lt;br /&gt;
Image size: 559 MB&lt;br /&gt;
Estimated time: 55 seconds&lt;br /&gt;
Elapsed time: 64, progress: 100% 8944+0 records in&lt;br /&gt;
8944+0 records out&lt;br /&gt;
586153984 bytes (586 MB) copied, 63.0486 s, 9.3 MB/s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mic-image-writer can estimate how long it will take to write the given image to your USB disk and reports current writing progress. It automatically unmounts your USB disk, if it is mounted. If your USB can't be unmounted, it will terminate.&lt;br /&gt;
&lt;br /&gt;
If you love UI mode, you can run it in X enviroment. The command with the added -g flag:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-writer -g meego-xxx.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Image name is optional.&lt;br /&gt;
&lt;br /&gt;
== Running mic-image-convertor ==&lt;br /&gt;
&lt;br /&gt;
It's very easy to use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-convertor --source-image=InputImage --target-format=Targegformat&lt;br /&gt;
&lt;br /&gt;
sudo mic-image-convertor -I InputImage -T Targegformat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to translate a KVM raw image to livecd image, just type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-convertor --source-image=meego-core-200902200545/meego-core-200902200545-sda.raw --target-format=livecd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A new livecd image of meego-converted-from-raw-200902201804.iso is generated. The tool can detect the type of input image, either raw or vmdk.&lt;br /&gt;
&lt;br /&gt;
This tool is very useful. For example, the developer can launch a virtual machine running MeeGo v2 and make whatever changes on the virtual system like yum install/remove a package, scp a source tarball to VM and build and try, and etc. Then with a simple &amp;quot;sync&amp;quot; or shutdown of VM, the VM image now contains his changes. With this tool, the VM image can be transformed to a live image and burned to a USB flash disk. Now developers can have final verifications in a target device, with changes in the live system.&lt;br /&gt;
&lt;br /&gt;
== Running mic-chroot ==&lt;br /&gt;
&lt;br /&gt;
There are two major usage models for mic-chroot for developers.&lt;br /&gt;
&lt;br /&gt;
'''chroot directly into the image to use it as a development environment, then optionally create a new image based off of your changes'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-chroot  -c livecd meego-core-200903131337.iso&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above command would present a chroot, using the livecd image, to developers with some bind mounts like /proc /sys /dev/pts and /parentroot. With those bind mounts, developers now can easily exchange files in chroot env with host /parentroot, and conduct yum install, yum remove and any other network related operations. After done and typing &amp;quot;exit&amp;quot;, a new live ISO image is created from the chroot env with the changes developers made.&lt;br /&gt;
&lt;br /&gt;
'''Unpack and modify the image's filesystem (which you can save), and create a new image based off of your changes'''&lt;br /&gt;
&lt;br /&gt;
Sometimes developers want to keep the chroot env so that they can do multiple changes in that root file system at different times. So they want to execute following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-chroot -s my-chroot-fs --unpack-only  meego-core-200903131337.iso --bind-mounts=/proc:/proc;/:/parentroot;/sys:/sys;/dev/pts:/dev/pts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above creates a folder 'my-chroot-fs' in the current directory, using the chroot env from the livecd image. Of course if developers forget add the --bind-mounts options, they must manually do some bind mounts themselves like for /proc /sys /dev/pts to use network and run many commands. Don't forget copying /etc/reslov.conf into my-chroot-fs to use DNS. Now at any time developers think is time to create an image from the chroot env, just execute following to create a livecd image&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-chroot -c livecd --convert-only my-chroot-fs/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enabling Autoinstallation ==&lt;br /&gt;
&lt;br /&gt;
You need to copy a kickstart file into /root/mic2-ks.cfg which is used for&lt;br /&gt;
automated installation of the image. To activate autoinstall mode, boot with autoinst on the command line&lt;br /&gt;
or add --menus=autoinst to the bootloader directive in the kickstart file you use to&lt;br /&gt;
create the image.&lt;br /&gt;
&lt;br /&gt;
= Known issues =&lt;br /&gt;
&lt;br /&gt;
* MIC2 is not compatible with Ubuntu 8.04 (Yum package compatibility)&lt;br /&gt;
* MIC2 is not compatible with the initial Ubuntu 9.04.  Make sure you have package libsqlite3-0 of 3.6.10-1ubuntu0.2 or later.&lt;br /&gt;
* MIC2 has some issues on Debian, please refer to [[MIC on Debian]] to get installation instructions&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
You can file a bug on http://bugzilla.meego.com/enter_bug.cgi?product=Development%20Tools (Note: you should select MIC for component) if you run into any MIC2-related issue, bugzilla can track your issue faster and more efficiently.&lt;br /&gt;
&lt;br /&gt;
===libgcc related issues===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libgcc_s.so.1 must be installed for pthread_cancel to work&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Error: failed to create image : '/sbin/mksquashfs /var/tmp/imgcreate-FKCSsk/iso-u8xCPh/LiveOS/osmin /var/tmp/imgcreate-FKCSsk/iso-u8xCPh/LiveOS/osmin.img' exited with error (-6)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This error occurs when MIC2 is unable to find the proper version of libgcc.  This usually happens on x86_64 systems - MIC2 is looking for the 32 bit version of libgcc, but only the 64 bit version is installed.  Installing the 32 bit version of libgcc should resolve this.&lt;br /&gt;
&lt;br /&gt;
===General squashfs issues===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;Error: failed to create image : '/sbin/mksquashfs /var/tmp/imgcreate-FKCSsk/iso-u8xCPh/LiveOS/osmin /var/tmp/imgcreate-FKCSsk/iso-u8xCPh/LiveOS/osmin.img' exited with error (-6)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This error can also be an issue with the syslinux package.  Try updating to the latest version for your distro.&lt;br /&gt;
&lt;br /&gt;
===device-mapper issues===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unable to remove open device&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a race condition with device-mapper in Fedora:  https://bugzilla.redhat.com/show_bug.cgi?id=506644. Usually rerunning the MIC2 command will resolve this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Advanced Hacking Tips = &lt;br /&gt;
&lt;br /&gt;
===replace kernel in live image===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$sudo mic-image-convertor --source-image=&amp;lt;your-netbook.img&amp;gt; --target-format=livecd --shell&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command will give you a chroot environment of MeeGo, you can follow the below steps to replace the default kernel with a new one.&lt;br /&gt;
&lt;br /&gt;
1). remove the old kernel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# rpm -e kernel-netbook&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: execute the above command in chroot environment.&lt;br /&gt;
&lt;br /&gt;
2). copy new kernel to chroot environment of MeeGo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$sudo cp /path/to/kernel-*.rpm /var/tmp/imgcreate-*/install_root/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: execute the above command in your host system.&lt;br /&gt;
&lt;br /&gt;
/path/to/kernel-*.rpm is your new kernel to install, /var/tmp/imgcreate-*/install_root/ is the directory where chroot MeeGo mounted on.&lt;br /&gt;
&lt;br /&gt;
3). install the new kernel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# rpm -ivh /kernel-*.rpm&lt;br /&gt;
# rm /kernel-*.rpm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: execute the above command in chroot environment.&lt;br /&gt;
&lt;br /&gt;
After that, you can find out the new kernel in directory /boot/.&lt;br /&gt;
&lt;br /&gt;
4). update contents of isolinux&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$sudo cp /var/tmp/imgcreate-*/install_root/boot/initrd-*.img  /var/tmp/imgcreate-*/iso-*/isolinux/initrd0.img&lt;br /&gt;
$sudo cp /var/tmp/imgcreate-*/install_root/boot/vmlinuz-*  /var/tmp/imgcreate-*/iso-*/isolinux/vmlinuz0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: execute the above command in your host system.&lt;br /&gt;
&lt;br /&gt;
5. create an new image&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
NOTE: execute the above command in chroot environment.&lt;br /&gt;
&lt;br /&gt;
After all the above steps, you got an new image.&lt;/div&gt;</summary>
		<author><name>Vesse</name></author>	</entry>

	</feed>