Decoupled tools from tests
@ -1,85 +0,0 @@
|
||||
= OpenQA install guide =
|
||||
|
||||
== Install OpenSuse 13.2, default with Gnome ==
|
||||
|
||||
* Add online repos before install
|
||||
* Create partition setup & use the right HDD
|
||||
* Select Update & Non-OSS repos & Main Update Repository
|
||||
* Select GNOME desktop
|
||||
* Create user (test/fedora), make user system administrator
|
||||
* Disable firewall, enable SSH
|
||||
* ???
|
||||
* Profit!
|
||||
|
||||
|
||||
|
||||
== OpenQA installation ==
|
||||
|
||||
sudo su -
|
||||
|
||||
# add user
|
||||
useradd geekotest
|
||||
|
||||
# add repos
|
||||
zypper ar -f obs://devel:openQA/openSUSE_13.2 openQA
|
||||
zypper ar -f obs://devel:openQA:13.2/openSUSE_13.2 openQA-perl-modules
|
||||
|
||||
# install
|
||||
zypper in openQA
|
||||
zypper in openQA-worker
|
||||
|
||||
# filesystem layout
|
||||
|
||||
cd /var/lib/openqa
|
||||
mkdir pool/1
|
||||
chown -R geekotest backlog cache factory perl pool share testresults script
|
||||
|
||||
|
||||
# apache
|
||||
gensslcert
|
||||
cd /etc/apache2/vhosts.d/
|
||||
a2enmod headers
|
||||
a2enmod proxy
|
||||
a2enmod proxy_http
|
||||
a2enmod proxy_wstunnel
|
||||
a2enmod ssl
|
||||
a2enflag SSL
|
||||
|
||||
cp openqa-ssl.conf.template openqa-ssl.conf
|
||||
cp openqa.conf.template openqa.conf
|
||||
|
||||
# edit openqa-common.inc
|
||||
# replace Order allow deny & Allow from all by sinle line
|
||||
# Require all granted
|
||||
|
||||
# edit openqa-ssl.conf
|
||||
# un-comment lines starting with #SSL
|
||||
# replace paths to certificates from 'openqa.{crt,key}' to 'server.{crt,key}'
|
||||
|
||||
# OpenID
|
||||
# edit /etc/openqa/openqa.ini
|
||||
# uncomment & change:
|
||||
# [openid]
|
||||
# provider = https://id.fedoraproject.org/
|
||||
|
||||
|
||||
# apply patch fixing machine-pausing in QEMU, if needed
|
||||
# https://github.com/os-autoinst/os-autoinst/commit/c8896375288d5f39424cf06108a92c8498c4aff3
|
||||
|
||||
# services
|
||||
systemctl enable apache2
|
||||
systemctl restart apache2
|
||||
systemctl enable openqa-webui
|
||||
systemctl restart openqa-webui
|
||||
|
||||
|
||||
curl http://localhost
|
||||
|
||||
# login via OpenID - the first one to login is automagically set to be the admin
|
||||
|
||||
# Setup Worker
|
||||
# go to http:/localhost/api_keys & create the keys
|
||||
# copy the key & secret to /etc/openqa/client.conf
|
||||
systemctl enable openqa-worker@1
|
||||
systemctl start openqa-worker@1
|
||||
# check whether worker is active in the web-ui
|
@ -1,52 +0,0 @@
|
||||
# Default boot and install
|
||||
* workstation live
|
||||
* server offline
|
||||
* KDE live
|
||||
|
||||
# Storage devices
|
||||
* sata
|
||||
* pata
|
||||
* scsi
|
||||
* virtio
|
||||
* raidy?
|
||||
|
||||
# guided storage configuration
|
||||
* guided empty
|
||||
* delete all
|
||||
* multi select
|
||||
* delete partial
|
||||
* free space
|
||||
* encrypted
|
||||
* multi empty all
|
||||
|
||||
# guided shrinking
|
||||
* shrink?
|
||||
|
||||
# custom storage
|
||||
* software raid
|
||||
* btrfs
|
||||
* ext3
|
||||
* xfs
|
||||
* no swap
|
||||
|
||||
# user interface
|
||||
* interface graphical
|
||||
* text?
|
||||
|
||||
# installation repositories
|
||||
* http/ftp variation
|
||||
* nfs???
|
||||
|
||||
# kickstarts?
|
||||
* (zalezi na sitovani mezi virtualkou a hostem)
|
||||
|
||||
# upgrade?
|
||||
* (slo by to, ale bude to tahat baliky z netu)
|
||||
|
||||
# misc
|
||||
* anaconda user creation
|
||||
* updates img via url
|
||||
* updates img via local media
|
||||
* traceback debug
|
||||
* dualboot with windows
|
||||
* image boot local
|
@ -1,32 +0,0 @@
|
||||
= QEMU settings =
|
||||
|
||||
Set via variables per-testsuite in the OpenQA-opensuse tests (might make more sense to do it per-machine):
|
||||
|
||||
# disk settings
|
||||
$vars->{NUMDISKS} ||= 1;
|
||||
$vars->{HDDSIZEGB} ||= 10;
|
||||
$vars->{HDDMODEL} ||= "virtio-blk";
|
||||
# network settings
|
||||
$vars->{NICMODEL} ||= "virtio-net";
|
||||
$vars->{NICTYPE} ||= "user";
|
||||
$vars->{NICMAC} ||= "52:54:00:12:34:56";
|
||||
# misc
|
||||
if (!$vars->{OFW}) {
|
||||
$vars->{QEMUVGA} ||= ["cirrus"];
|
||||
}
|
||||
else {
|
||||
$vars->{QEMUVGA} ||= [ 'std', '-g', '1024x768' ];
|
||||
}
|
||||
$vars->{QEMUCPUS} ||= 1;
|
||||
if ( defined( $vars->{RAIDLEVEL} ) ) {
|
||||
$vars->{NUMDISKS} = 4;
|
||||
}
|
||||
|
||||
|
||||
|
||||
UEFI, USBBOOT, KEEPHDDS, LAPTOP - ???
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1,19 +0,0 @@
|
||||
# server_simple
|
||||
|
||||
## TESTS
|
||||
// get anaconda
|
||||
* disk_guided_empty
|
||||
// start installatin & reboot
|
||||
// wait for login screen
|
||||
|
||||
## QEMU-vars
|
||||
|
||||
|
||||
## Covered testcases
|
||||
* server offline
|
||||
* virtio
|
||||
* guided empty
|
||||
* interface graphical
|
||||
* anaconda user creation
|
||||
|
||||
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 144 KiB |
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 143 KiB |
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 97 KiB |
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 97 KiB |
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 102 KiB |
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 73 KiB |
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 102 KiB |
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 81 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 809 B After Width: | Height: | Size: 809 B |
@ -1,72 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
import pygame
|
||||
import sys
|
||||
import os.path
|
||||
import glob
|
||||
import json
|
||||
from pygame.locals import *
|
||||
|
||||
def load_areas(img, jsons):
|
||||
if img in jsons.keys():
|
||||
f = open(jsons[img], "r")
|
||||
img_json = f.read()
|
||||
f.close()
|
||||
parsed = json.loads(img_json)
|
||||
return parsed["area"]
|
||||
else:
|
||||
return []
|
||||
|
||||
if len(sys.argv) != 2:
|
||||
print "%s directory" % sys.argv[0]
|
||||
sys.exit()
|
||||
|
||||
RES = (1024, 768)
|
||||
|
||||
pygame.init()
|
||||
fpsClock = pygame.time.Clock()
|
||||
|
||||
windowSurfaceObj = pygame.display.set_mode(RES)
|
||||
pygame.display.set_caption("OpenQA needles viewer")
|
||||
|
||||
img_files = glob.glob(os.path.join(sys.argv[1], "*.png"))
|
||||
img_files.sort()
|
||||
json_files = glob.glob(os.path.join(sys.argv[1], "*.json"))
|
||||
|
||||
jsons = {}
|
||||
for img in img_files:
|
||||
json_name = os.path.splitext(img)[0] + ".json"
|
||||
if json_name in json_files:
|
||||
jsons[img] = json_name
|
||||
|
||||
index = 0
|
||||
imageSurfaceObj = pygame.image.load(img_files[index])
|
||||
pygame.display.set_caption(os.path.basename(img_files[index]))
|
||||
areas = load_areas(img_files[index], jsons)
|
||||
|
||||
while True:
|
||||
for event in pygame.event.get():
|
||||
if event.type == QUIT:
|
||||
pygame.quit()
|
||||
sys.exit()
|
||||
elif event.type == KEYDOWN:
|
||||
if event.key == K_LEFT:
|
||||
index = index - 1 if index > 0 else len(img_files) - 1
|
||||
img_index = img_files[index]
|
||||
imageSurfaceObj = pygame.image.load(img_index)
|
||||
pygame.display.set_caption(os.path.basename(img_index))
|
||||
areas = load_areas(img_index, jsons)
|
||||
elif event.key == K_RIGHT:
|
||||
index = index + 1 if index + 1 < len(img_files) else 0
|
||||
img_index = img_files[index]
|
||||
imageSurfaceObj = pygame.image.load(img_index)
|
||||
pygame.display.set_caption(os.path.basename(img_index))
|
||||
areas = load_areas(img_index, jsons)
|
||||
elif event.key == K_ESCAPE:
|
||||
pygame.event.post(pygame.event.Event(QUIT))
|
||||
|
||||
windowSurfaceObj.blit(imageSurfaceObj, (0, 0))
|
||||
for area in areas:
|
||||
pygame.draw.rect(windowSurfaceObj, pygame.Color(255, 0, 0), (area["xpos"], area["ypos"], area["width"], area["height"]), 3)
|
||||
|
||||
pygame.display.update()
|
||||
fpsClock.tick(30)
|