#! /usr/bin/perl # # test-config-db.pl - test-script for the OpenSLX config-db & MetaDB modules. # # (c) 2006 - OpenSLX.com # # Oliver Tappe # use strict; # add the lib-folder and the config-db folder to perl's search # path for modules: use FindBin; use lib "$FindBin::RealBin/../../lib"; use lib "$FindBin::RealBin/.."; # development path to config-db stuff print "THIS IS CURRENTLY BROKEN!!!\n"; exit 5; use OpenSLX::Basics; use OpenSLX::ConfigDB; openslxInit(); my $openslxDB = connectConfigDB(); addVendorOS($openslxDB, { 'name' => "suse-93-minimal", 'descr' => "SuSE 9.3 minimale Installation", }); addVendorOS($openslxDB, { 'name' => "suse-93-KDE", 'descr' => "SuSE 9.3 grafische Installation mit KDE", }); addVendorOS($openslxDB, { 'name' => "debian-31", 'descr' => "Debian 3.1 Default-Installation", }); my @systems; foreach my $id (1..10) { push @systems, { 'name' => "name of $id", 'descr' => "descr of $id", 'vendor_os_id' => 1 + $id % 3, }; } addSystem($openslxDB, \@systems); removeSystem($openslxDB, [1,3,5,7,9,11,13,15,17,19] ); changeSystem($openslxDB, [ 2 ], [ { 'name' => 'new name of 2'} ] ); changeSystem($openslxDB, [ 0 ], [ { 'attrStartX' => 'kde,gnome'} ] ); changeSystem($openslxDB, [ 1,2,3 ], [ { 'attrHwMonitor' => '1280x1024'} ] ); changeSystem($openslxDB, [ 4 ], [ { 'attrHwMonitor' => '800x600'} ] ); changeSystem($openslxDB, 4, { 'id' => 114, 'name' => 'id should still be 4'} ); my $metaDB = $openslxDB->{'meta-db'}; my $colDescrs = [ 'id:pk', 'name:s.30', 'descr:s.1024', 'counter:i', 'hidden:b', 'dropped1:b', 'dropped2:b', ]; my $initialVals = [ { 'name' => '123456789012345678901234567890xxx', 'descr' => 'descr-value-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'counter' => 34567, 'hidden' => 1, 'dropped1' => 0, 'dropped2' => 1, }, { 'name' => 'name', 'descr' => q[from_äöüß#'"$...\to_here], 'counter' => -1, 'hidden' => 0, 'dropped1' => 1, 'dropped2' => 0, }, ]; $metaDB->schemaAddTable('test', $colDescrs, $initialVals); $metaDB->schemaRenameTable('test', 'test2', $colDescrs); push @$colDescrs, 'added:s.20'; push @$colDescrs, 'added2:s.20'; $metaDB->schemaAddColumns('test2', ['added:s.20', 'added2:b'], [{'added' => 'added'}, {'added2' => '1'}], $colDescrs); my @rows = $metaDB->_doSelect("SELECT * FROM test2"); foreach my $row (@rows) { foreach my $r (keys %$row) { print "$r = $row->{$r}\n"; } } $colDescrs = [grep {$_ !~ m[dropped]} @$colDescrs]; $metaDB->schemaDropColumns('test2', ['dropped1', 'dropped2'], $colDescrs); $colDescrs = [ map { if ($_ =~ m[counter]) { "count:i"; } elsif ($_ =~ m[descr]) { "description:s.30"; } else { $_ } } @$colDescrs ]; $metaDB->schemaChangeColumns('test2', { 'counter' => 'count:i', 'descr' => 'description:s.30' }, $colDescrs); @rows = $metaDB->_doSelect("SELECT * FROM test2"); foreach my $row (@rows) { foreach my $r (keys %$row) { print "$r = $row->{$r}\n"; } } $metaDB->schemaDropTable('test2'); my $clientG01ID = addClient($openslxDB, { 'name' => "PC-G-01", 'mac' => "00:14:85:80:00:35", 'boot_type' => 'pxe', }); my $clientG02ID = addClient($openslxDB, { 'name' => "PC-G-02", 'mac' => "00:14:85:80:00:36", 'boot_type' => 'pxe', }); my $clientG03ID = addClient($openslxDB, { 'name' => "PC-G-03", 'mac' => "00:14:85:80:00:37", 'boot_type' => 'pxe', }); my $clientG04ID = addClient($openslxDB, { 'name' => "PC-G-04", 'mac' => "00:14:85:80:00:38", 'boot_type' => 'pxe', 'unbootable' => 1, }); my $clientF01ID = addClient($openslxDB, { 'name' => "PC-F-01", 'mac' => "00:14:85:80:00:31", 'boot_type' => 'other', }); my $clientF02ID = addClient($openslxDB, { 'name' => "PC-F-02", 'mac' => "00:14:85:80:00:32", 'boot_type' => 'pxe', }); my $clientF03ID = addClient($openslxDB, { 'name' => "PC-F-03", 'mac' => "00:14:85:80:00:33", 'boot_type' => 'pxe', }); addClientIDsToSystem($openslxDB, 6, [$clientG01ID, $clientG02ID, $clientG03ID, $clientG04ID, $clientF01ID, $clientF02ID, $clientF03ID]); my $group1ID = addGroup($openslxDB, { 'name' => "Gell-PCs", 'descr' => "Gell-Threemansion PCs from 2002", 'attrHwMouse' => 'serial', }); addClientIDsToGroup($openslxDB, $group1ID, [$clientG01ID, $clientF02ID, $clientG03ID]); my $group2ID = addGroup($openslxDB, { 'name' => "Teacher-PCs", 'descr' => "all PCs sitting on teacher's desks", 'attrHwMonitor' => '1600x1200', }); addClientIDsToGroup($openslxDB, $group2ID, [$clientG01ID, $clientF01ID]); addSystemIDsToGroup($openslxDB, $group2ID, [2, 3]); my $group3ID = addGroup($openslxDB, { 'name' => "PCs in room G", 'descr' => "all PCs of room 234", }); addClientIDsToGroup($openslxDB, $group3ID, [$clientG01ID, $clientG02ID, $clientG03ID, $clientG04ID]); disconnectConfigDB($openslxDB);