Skip to content

MigrateDatabaseToAutotest0.15

Lucas Meneghel Rodrigues edited this page Mar 18, 2013 · 2 revisions

Migrating from an legacy (pre 0.15) database:

  1. Dump the complete database and save it securely:
mysqldump -u root -p autotest_web > ~/autotest_web.dump
  1. Check if there are duplicates that we do not allow anymore:
SELECT name, COUNT(name) AS c FROM afe_autotests GROUP BY name HAVING c > 1;

+-------------------------+---+
| name                    | c |
+-------------------------+---+
| Sample - More profilers | 2 |
+-------------------------+---+

It's probable that you will hit this one:

SELECT id, name, description FROM afe_autotests WHERE name = 'Sample - More profilers'\G

*************************** 1. row ***************************
         id: 131
       name: Sample - More profilers
description: Runs sleeptest after installing a kernel rpm. Please note that syntax works
only if you have an autotest package repository properly setup.
*************************** 2. row ***************************
         id: 135
       name: Sample - More profilers
description: Runs sleeptest with different profilers present in the autotest tree. Also,
it shows the convenience logging methods, such as logging.info and
logging.error.

Update the second result with a better name (matches commit 42e2eb9):

UPDATE afe_autotests SET name = 'Sleep test with RPM kernel install' WHERE id = 135;
  1. Fix the schema of tko_tests:
ALTER TABLE tko_tests DROP invalid;
  1. Dump the current data:

This script is going to help:

#!/bin/bash
DB=autotest_web
mysqldump -u root -n -t -c \
    --ignore-table=$DB.afe_acl_groups \
    --ignore-table=$DB.tko_status \
    --ignore-table=$DB.tko_testlabel \
    --ignore-table=$DB.afe_parameterized_jobs_kernels \
    --ignore-table=$DB.auth_group \
    --ignore-table=$DB.auth_group \
    --ignore-table=$DB.auth_message \
    --ignore-table=$DB.auth_permission \
    --ignore-table=$DB.django_content_type \
    --ignore-table=$DB.django_site \
    --ignore-table=$DB.tko_query_history \
    --ignore-table=$DB.tko_test_labels \
    -p $DB > ~/autotest_web.massaged.dump
  1. Drop the old database
$ echo 'DROP DATABASE autotest_web' | mysql -u root -p
  1. Create the new database:
$ autotest/installation_support/autotest-database-turnkey -s --from-config
  1. Load the massaged data:
$ mysql -u root -p autotest_web < ~/autotest_web.massaged.dump
  1. Profit!
Clone this wiki locally