Commit 980b4ff8 authored by Xavier Thompson's avatar Xavier Thompson

test_slapproxy: Test migration to db version 17

parent 19b83032
...@@ -2317,7 +2317,7 @@ class _MigrationTestCase(TestInformation, TestRequest, TestSlaveRequest, TestMul ...@@ -2317,7 +2317,7 @@ class _MigrationTestCase(TestInformation, TestRequest, TestSlaveRequest, TestMul
""" """
dump_filename = NotImplemented dump_filename = NotImplemented
initial_table_list = NotImplemented initial_table_list = NotImplemented
current_version = '16' current_version = '17'
def setUp(self): def setUp(self):
TestInformation.setUp(self) TestInformation.setUp(self)
...@@ -2373,17 +2373,18 @@ class _MigrationTestCase(TestInformation, TestRequest, TestSlaveRequest, TestMul ...@@ -2373,17 +2373,18 @@ class _MigrationTestCase(TestInformation, TestRequest, TestSlaveRequest, TestMul
) )
partition_list = self.db.execute("select * from partition{}".format(self.current_version)).fetchall() partition_list = self.db.execute("select * from partition{}".format(self.current_version)).fetchall()
self.maxDiff = None
self.assertEqual(partition_list, [ self.assertEqual(partition_list, [
('slappart0', 'computer', 'busy', '/srv/slapgrid//srv//runner/project//slapos/software.cfg', '<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<instance>\n <parameter id="json">{\n "site-id": "erp5"\n }\n}</parameter>\n</instance>\n', None, None, 'production', 'slapos', None, 'started', None), ('slappart0', 'computer', 'busy', '/srv/slapgrid//srv//runner/project//slapos/software.cfg', '<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<instance>\n <parameter id="json">{\n "site-id": "erp5"\n }\n}</parameter>\n</instance>\n', None, None, 'production', 'slapos', None, None, 'started', None),
('slappart1', 'computer', 'busy', '/srv/slapgrid//srv//runner/project//slapos/software.cfg', "<?xml version='1.0' encoding='utf-8'?>\n<instance/>\n", '<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<instance>\n <parameter id="url">mysql://127.0.0.1:45678/erp5</parameter>\n</instance>\n', None, 'mariadb', 'MariaDB DataBase', 'slappart0', 'started', None), ('slappart1', 'computer', 'busy', '/srv/slapgrid//srv//runner/project//slapos/software.cfg', "<?xml version='1.0' encoding='utf-8'?>\n<instance/>\n", '<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<instance>\n <parameter id="url">mysql://127.0.0.1:45678/erp5</parameter>\n</instance>\n', None, 'mariadb', 'MariaDB DataBase', 'slappart0', 'slappart0', 'started', None),
('slappart2', 'computer', 'busy', '/srv/slapgrid//srv//runner/project//slapos/software.cfg', '<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<instance>\n <parameter id="cloudooo-json"></parameter>\n</instance>\n', '<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<instance>\n <parameter id="url">cloudooo://127.0.0.1:23000/</parameter>\n</instance>\n', None, 'cloudooo', 'Cloudooo', 'slappart0', 'started', None), ('slappart2', 'computer', 'busy', '/srv/slapgrid//srv//runner/project//slapos/software.cfg', '<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<instance>\n <parameter id="cloudooo-json"></parameter>\n</instance>\n', '<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<instance>\n <parameter id="url">cloudooo://127.0.0.1:23000/</parameter>\n</instance>\n', None, 'cloudooo', 'Cloudooo', 'slappart0', 'slappart0', 'started', None),
('slappart3', 'computer', 'busy', '/srv/slapgrid//srv//runner/project//slapos/software.cfg', "<?xml version='1.0' encoding='utf-8'?>\n<instance/>\n", '<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<instance>\n <parameter id="url">memcached://127.0.0.1:11000/</parameter>\n</instance>\n', None, 'memcached', 'Memcached', 'slappart0', 'started', None), ('slappart3', 'computer', 'busy', '/srv/slapgrid//srv//runner/project//slapos/software.cfg', "<?xml version='1.0' encoding='utf-8'?>\n<instance/>\n", '<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<instance>\n <parameter id="url">memcached://127.0.0.1:11000/</parameter>\n</instance>\n', None, 'memcached', 'Memcached', 'slappart0', 'slappart0', 'started', None),
('slappart4', 'computer', 'busy', '/srv/slapgrid//srv//runner/project//slapos/software.cfg', "<?xml version='1.0' encoding='utf-8'?>\n<instance/>\n", '<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<instance>\n <parameter id="url">memcached://127.0.0.1:13301/</parameter>\n</instance>\n', None, 'kumofs', 'KumoFS', 'slappart0', 'started', None), ('slappart4', 'computer', 'busy', '/srv/slapgrid//srv//runner/project//slapos/software.cfg', "<?xml version='1.0' encoding='utf-8'?>\n<instance/>\n", '<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<instance>\n <parameter id="url">memcached://127.0.0.1:13301/</parameter>\n</instance>\n', None, 'kumofs', 'KumoFS', 'slappart0', 'slappart0', 'started', None),
('slappart5', 'computer', 'busy', '/srv/slapgrid//srv//runner/project//slapos/software.cfg', '<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<instance>\n <parameter id="kumofs-url">memcached://127.0.0.1:13301/</parameter>\n <parameter id="memcached-url">memcached://127.0.0.1:11000/</parameter>\n <parameter id="cloudooo-url">cloudooo://127.0.0.1:23000/</parameter>\n</instance>\n', '<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<instance>\n <parameter id="url">https://[fc00::1]:10001</parameter>\n</instance>\n', None, 'tidstorage', 'TidStorage', 'slappart0', 'started', None), ('slappart5', 'computer', 'busy', '/srv/slapgrid//srv//runner/project//slapos/software.cfg', '<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<instance>\n <parameter id="kumofs-url">memcached://127.0.0.1:13301/</parameter>\n <parameter id="memcached-url">memcached://127.0.0.1:11000/</parameter>\n <parameter id="cloudooo-url">cloudooo://127.0.0.1:23000/</parameter>\n</instance>\n', '<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<instance>\n <parameter id="url">https://[fc00::1]:10001</parameter>\n</instance>\n', None, 'tidstorage', 'TidStorage', 'slappart0', 'slappart0', 'started', None),
('slappart6', 'computer', 'free', None, None, None, None, None, None, None, 'started', None), ('slappart6', 'computer', 'free', None, None, None, None, None, None, None, None, 'started', None),
('slappart7', 'computer', 'free', None, None, None, None, None, None, None, 'started', None), ('slappart7', 'computer', 'free', None, None, None, None, None, None, None, None, 'started', None),
('slappart8', 'computer', 'free', None, None, None, None, None, None, None, 'started', None), ('slappart8', 'computer', 'free', None, None, None, None, None, None, None, None, 'started', None),
('slappart9', 'computer', 'free', None, None, None, None, None, None, None, 'started', None), ('slappart9', 'computer', 'free', None, None, None, None, None, None, None, None, 'started', None),
]) ])
slave_list = self.db.execute("select * from slave{}".format(self.current_version)).fetchall() slave_list = self.db.execute("select * from slave{}".format(self.current_version)).fetchall()
...@@ -2406,6 +2407,22 @@ class _MigrationTestCase(TestInformation, TestRequest, TestSlaveRequest, TestMul ...@@ -2406,6 +2407,22 @@ class _MigrationTestCase(TestInformation, TestRequest, TestSlaveRequest, TestMul
[('forwarded_instance', 'https://bogus/master/url')] [('forwarded_instance', 'https://bogus/master/url')]
) )
# Check that partition_root field is correctly filled
if self.initial_version <= 16:
self.db.row_factory = sqlite3.Row
rows = self.db.execute("select * from partition{}".format(self.current_version)).fetchall()
self.db.row_factory = None
partitions = {row['reference'] : row for row in rows}
for row in rows:
requested_by = row['requested_by']
if requested_by:
root_id = row['root_partition']
self.assertTrue(root_id)
parent = partitions.get(requested_by)
# Note: sub-sub-instances case not covered in the test database
if parent and parent['requested_by']:
self.assertEqual(root_id, parent['root_partition'])
# Check that we only have new tables # Check that we only have new tables
table_list = self.db.execute("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name").fetchall() table_list = self.db.execute("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name").fetchall()
self.assertEqual([x[0] for x in table_list], self.assertEqual([x[0] for x in table_list],
...@@ -2441,34 +2458,47 @@ class _MigrationTestCase(TestInformation, TestRequest, TestSlaveRequest, TestMul ...@@ -2441,34 +2458,47 @@ class _MigrationTestCase(TestInformation, TestRequest, TestSlaveRequest, TestMul
class TestMigrateVersion10ToLatest(_MigrationTestCase): class TestMigrateVersion10ToLatest(_MigrationTestCase):
initial_version = 10
dump_filename = 'database_dump_version_10.sql' dump_filename = 'database_dump_version_10.sql'
initial_table_list = ['computer10', 'partition10', 'partition_network10', 'slave10', 'software10', ] initial_table_list = ['computer10', 'partition10', 'partition_network10', 'slave10', 'software10', ]
class TestMigrateVersion11ToLatest(_MigrationTestCase): class TestMigrateVersion11ToLatest(_MigrationTestCase):
initial_version = 11
dump_filename = 'database_dump_version_11.sql' dump_filename = 'database_dump_version_11.sql'
initial_table_list = ['computer11', 'forwarded_partition_request11', 'partition11', 'partition_network11', 'slave11', 'software11', ] initial_table_list = ['computer11', 'forwarded_partition_request11', 'partition11', 'partition_network11', 'slave11', 'software11', ]
class TestMigrateVersion12ToLatest(_MigrationTestCase): class TestMigrateVersion12ToLatest(_MigrationTestCase):
initial_version = 12
dump_filename = 'database_dump_version_12.sql' dump_filename = 'database_dump_version_12.sql'
initial_table_list = ['computer12', 'forwarded_partition_request12', 'partition12', 'partition_network12', 'slave12', 'software12', ] initial_table_list = ['computer12', 'forwarded_partition_request12', 'partition12', 'partition_network12', 'slave12', 'software12', ]
class TestMigrateVersion13ToLatest(_MigrationTestCase): class TestMigrateVersion13ToLatest(_MigrationTestCase):
initial_version = 13
dump_filename = 'database_dump_version_13.sql' dump_filename = 'database_dump_version_13.sql'
initial_table_list = ['computer13', 'forwarded_partition_request13', 'partition13', 'partition_network13', 'slave13', 'software13', ] initial_table_list = ['computer13', 'forwarded_partition_request13', 'partition13', 'partition_network13', 'slave13', 'software13', ]
class TestMigrateVersion14ToLatest(_MigrationTestCase): class TestMigrateVersion14ToLatest(_MigrationTestCase):
initial_version = 14
dump_filename = 'database_dump_version_14.sql' dump_filename = 'database_dump_version_14.sql'
initial_table_list = ['computer14', 'forwarded_partition_request14', 'partition14', 'partition_network14', 'slave14', 'software14', ] initial_table_list = ['computer14', 'forwarded_partition_request14', 'partition14', 'partition_network14', 'slave14', 'software14', ]
class TestMigrateVersion15ToLatest(_MigrationTestCase): class TestMigrateVersion15ToLatest(_MigrationTestCase):
initial_version = 15
dump_filename = 'database_dump_version_15.sql' dump_filename = 'database_dump_version_15.sql'
initial_table_list = ['computer15', 'forwarded_partition_request15', 'local_software_release_root15', 'partition15', initial_table_list = ['computer15', 'forwarded_partition_request15', 'local_software_release_root15', 'partition15',
'partition_network15', 'slave15', 'software15', ] 'partition_network15', 'slave15', 'software15', ]
class TestMigrateVersion16ToLatest(_MigrationTestCase):
initial_version = 16
dump_filename = 'database_dump_version_16.sql'
initial_table_list = ['computer16', 'forwarded_partition_request16', 'local_software_release_root16', 'partition16',
'partition_network16', 'slave16', 'software16', ]
del _MigrationTestCase del _MigrationTestCase
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE local_software_release_root16 (
path VARCHAR(255)
);
INSERT INTO "local_software_release_root16" VALUES('/');
INSERT INTO "local_software_release_root16" VALUES('/');
CREATE TABLE software16 (
url VARCHAR(255),
computer_reference VARCHAR(255) DEFAULT 'computer',
requested_state VARCHAR(255) DEFAULT 'available',
CONSTRAINT uniq PRIMARY KEY (url, computer_reference)
);
INSERT INTO "software16" VALUES('/srv/slapgrid//srv//runner/project//slapos/software.cfg','computer','available');
CREATE TABLE computer16 (
reference VARCHAR(255) DEFAULT 'computer',
address VARCHAR(255),
netmask VARCHAR(255),
CONSTRAINT uniq PRIMARY KEY (reference)
);
INSERT INTO "computer16" VALUES('computer','127.0.0.1','255.255.255.255');
CREATE TABLE partition16 (
reference VARCHAR(255),
computer_reference VARCHAR(255) DEFAULT 'computer',
slap_state VARCHAR(255) DEFAULT 'free',
software_release VARCHAR(255),
xml TEXT,
connection_xml TEXT,
slave_instance_list TEXT,
software_type VARCHAR(255),
partition_reference VARCHAR(255), -- name of the instance
requested_by VARCHAR(255), -- only used for debugging,
-- slapproxy does not support proper scope
requested_state VARCHAR(255) NOT NULL DEFAULT 'started',
timestamp REAL,
CONSTRAINT uniq PRIMARY KEY (reference, computer_reference)
);
INSERT INTO "partition16" VALUES('slappart0','computer','busy','/srv/slapgrid//srv//runner/project//slapos/software.cfg','<?xml version=''1.0'' encoding=''utf-8''?>
<instance>
<parameter id="json">{
"site-id": "erp5"
}
}</parameter>
</instance>
',NULL,NULL,'production','slapos',NULL,'started',NULL);
INSERT INTO "partition16" VALUES('slappart1','computer','busy','/srv/slapgrid//srv//runner/project//slapos/software.cfg','<?xml version=''1.0'' encoding=''utf-8''?>
<instance/>
','<?xml version=''1.0'' encoding=''utf-8''?>
<instance>
<parameter id="url">mysql://127.0.0.1:45678/erp5</parameter>
</instance>
',NULL,'mariadb','MariaDB DataBase','slappart0','started',NULL);
INSERT INTO "partition16" VALUES('slappart2','computer','busy','/srv/slapgrid//srv//runner/project//slapos/software.cfg','<?xml version=''1.0'' encoding=''utf-8''?>
<instance>
<parameter id="cloudooo-json"></parameter>
</instance>
','<?xml version=''1.0'' encoding=''utf-8''?>
<instance>
<parameter id="url">cloudooo://127.0.0.1:23000/</parameter>
</instance>
',NULL,'cloudooo','Cloudooo','slappart0','started',NULL);
INSERT INTO "partition16" VALUES('slappart3','computer','busy','/srv/slapgrid//srv//runner/project//slapos/software.cfg','<?xml version=''1.0'' encoding=''utf-8''?>
<instance/>
','<?xml version=''1.0'' encoding=''utf-8''?>
<instance>
<parameter id="url">memcached://127.0.0.1:11000/</parameter>
</instance>
',NULL,'memcached','Memcached','slappart0','started',NULL);
INSERT INTO "partition16" VALUES('slappart4','computer','busy','/srv/slapgrid//srv//runner/project//slapos/software.cfg','<?xml version=''1.0'' encoding=''utf-8''?>
<instance/>
','<?xml version=''1.0'' encoding=''utf-8''?>
<instance>
<parameter id="url">memcached://127.0.0.1:13301/</parameter>
</instance>
',NULL,'kumofs','KumoFS','slappart0','started',NULL);
INSERT INTO "partition16" VALUES('slappart5','computer','busy','/srv/slapgrid//srv//runner/project//slapos/software.cfg','<?xml version=''1.0'' encoding=''utf-8''?>
<instance>
<parameter id="kumofs-url">memcached://127.0.0.1:13301/</parameter>
<parameter id="memcached-url">memcached://127.0.0.1:11000/</parameter>
<parameter id="cloudooo-url">cloudooo://127.0.0.1:23000/</parameter>
</instance>
','<?xml version=''1.0'' encoding=''utf-8''?>
<instance>
<parameter id="url">https://[fc00::1]:10001</parameter>
</instance>
',NULL,'tidstorage','TidStorage','slappart0','started',NULL);
INSERT INTO "partition16" VALUES('slappart6','computer','free',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'started',NULL);
INSERT INTO "partition16" VALUES('slappart7','computer','free',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'started',NULL);
INSERT INTO "partition16" VALUES('slappart8','computer','free',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'started',NULL);
INSERT INTO "partition16" VALUES('slappart9','computer','free',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'started',NULL);
CREATE TABLE slave16 (
reference VARCHAR(255), -- unique slave reference
computer_reference VARCHAR(255) DEFAULT 'computer',
connection_xml TEXT,
hosted_by VARCHAR(255),
asked_by VARCHAR(255) -- only used for debugging,
-- slapproxy does not support proper scope
);
CREATE TABLE partition_network16 (
partition_reference VARCHAR(255),
computer_reference VARCHAR(255) DEFAULT 'computer',
reference VARCHAR(255),
address VARCHAR(255),
netmask VARCHAR(255)
);
INSERT INTO "partition_network16" VALUES('slappart0','computer','slappart0','127.0.0.1','255.255.255.255');
INSERT INTO "partition_network16" VALUES('slappart0','computer','slappart0','fc00::1','ffff:ffff:ffff::');
INSERT INTO "partition_network16" VALUES('slappart1','computer','slappart1','127.0.0.1','255.255.255.255');
INSERT INTO "partition_network16" VALUES('slappart1','computer','slappart1','fc00::1','ffff:ffff:ffff::');
INSERT INTO "partition_network16" VALUES('slappart2','computer','slappart2','127.0.0.1','255.255.255.255');
INSERT INTO "partition_network16" VALUES('slappart2','computer','slappart2','fc00::1','ffff:ffff:ffff::');
INSERT INTO "partition_network16" VALUES('slappart3','computer','slappart3','127.0.0.1','255.255.255.255');
INSERT INTO "partition_network16" VALUES('slappart3','computer','slappart3','fc00::1','ffff:ffff:ffff::');
INSERT INTO "partition_network16" VALUES('slappart4','computer','slappart4','127.0.0.1','255.255.255.255');
INSERT INTO "partition_network16" VALUES('slappart4','computer','slappart4','fc00::1','ffff:ffff:ffff::');
INSERT INTO "partition_network16" VALUES('slappart5','computer','slappart5','127.0.0.1','255.255.255.255');
INSERT INTO "partition_network16" VALUES('slappart5','computer','slappart5','fc00::1','ffff:ffff:ffff::');
INSERT INTO "partition_network16" VALUES('slappart6','computer','slappart6','127.0.0.1','255.255.255.255');
INSERT INTO "partition_network16" VALUES('slappart6','computer','slappart6','fc00::1','ffff:ffff:ffff::');
INSERT INTO "partition_network16" VALUES('slappart7','computer','slappart7','127.0.0.1','255.255.255.255');
INSERT INTO "partition_network16" VALUES('slappart7','computer','slappart7','fc00::1','ffff:ffff:ffff::');
INSERT INTO "partition_network16" VALUES('slappart8','computer','slappart8','127.0.0.1','255.255.255.255');
INSERT INTO "partition_network16" VALUES('slappart8','computer','slappart8','fc00::1','ffff:ffff:ffff::');
INSERT INTO "partition_network16" VALUES('slappart9','computer','slappart9','127.0.0.1','255.255.255.255');
INSERT INTO "partition_network16" VALUES('slappart9','computer','slappart9','fc00::1','ffff:ffff:ffff::');
CREATE TABLE forwarded_partition_request16 (
partition_reference VARCHAR(255), -- a.k.a source_instance_id
master_url VARCHAR(255),
CONSTRAINT uniq PRIMARY KEY (partition_reference, master_url)
);
INSERT INTO "forwarded_partition_request16" VALUES('forwarded_instance','https://bogus/master/url');
COMMIT;
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment