bitbake: toaster: tests Automated build-mode backend tests
Add tests to check various backend scenarios that require UI interaction. Add necessary files for above tests (the sqlite file and the default config json). (Bitbake rev: 8dcad75ad1d9b8adddeca57e996b8d904b209df5) Signed-off-by: Mihail Stanciu <stanciux.mihail@intel.com> Signed-off-by: Elliot Smith <elliot.smith@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
0497b570e5
commit
fe8a0a3697
|
@ -0,0 +1 @@
|
|||
../../../../../../toaster.sqlite
|
|
@ -23,13 +23,14 @@
|
|||
# step 2 - 3 needs to be run manually
|
||||
|
||||
import unittest, time, re, sys, getopt, os, logging, string, errno, exceptions
|
||||
import shutil, argparse, ConfigParser, platform
|
||||
import shutil, argparse, ConfigParser, platform, json
|
||||
from selenium import webdriver
|
||||
from selenium.common.exceptions import NoSuchElementException
|
||||
from selenium import selenium
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.ui import Select
|
||||
import sqlite3 as sqlite
|
||||
|
||||
|
||||
###########################################
|
||||
|
@ -1814,3 +1815,383 @@ class toaster_cases(toaster_cases_base):
|
|||
if not self.is_text_present("Toaster Manual"):
|
||||
self.assertFalse(True, msg=("please check [Toaster manual] link on page"))
|
||||
|
||||
####################################################################################################
|
||||
# Starting backend tests ###########################################################################
|
||||
####################################################################################################
|
||||
|
||||
##############
|
||||
# CASE 1066 #
|
||||
##############
|
||||
def test_1066(self):
|
||||
self.case_no = self.get_case_number()
|
||||
self.log.info(' CASE %s log: ' % str(self.case_no))
|
||||
con=sqlite.connect('toaster.sqlite')
|
||||
cursor = con.cursor()
|
||||
query = "select count(name) from orm_project a, auth_user b where a.user_id = b.id and b.username='_anonuser';"
|
||||
cursor.execute(query)
|
||||
data = cursor.fetchone()
|
||||
self.failUnless(data >= 1)
|
||||
|
||||
|
||||
##############
|
||||
# CASE 1071 #
|
||||
##############
|
||||
def test_1071(self):
|
||||
self.case_no = self.get_case_number()
|
||||
self.log.info(' CASE %s log: ' % str(self.case_no))
|
||||
con=sqlite.connect('toaster.sqlite')
|
||||
cursor = con.cursor()
|
||||
query = "select name from orm_release;"
|
||||
cursor.execute(query)
|
||||
data = cursor.fetchall()
|
||||
for i in range(0,4):
|
||||
data[i] = data[i][0]
|
||||
data.sort()
|
||||
print data
|
||||
json_parse = json.loads(open('toasterconf.json').read())
|
||||
json_data = []
|
||||
for i in range (0,4):
|
||||
json_data.append(json_parse['releases'][i]['name'])
|
||||
json_data.sort()
|
||||
print json_data
|
||||
self.failUnless(data == json_data)
|
||||
|
||||
##############
|
||||
# CASE 1072 #
|
||||
##############
|
||||
def test_1072(self):
|
||||
self.case_no = self.get_case_number()
|
||||
self.log.info(' CASE %s log: ' % str(self.case_no))
|
||||
con=sqlite.connect('toaster.sqlite')
|
||||
cursor = con.cursor()
|
||||
query = "select value from orm_toastersetting where name like 'DEFCONF%';"
|
||||
cursor.execute(query)
|
||||
data = cursor.fetchall()
|
||||
for i in range(0,6):
|
||||
data[i] = data[i][0]
|
||||
print data
|
||||
json_parse = json.loads(open('toasterconf.json').read())
|
||||
json_data=json_parse['config']
|
||||
json_data = json_data.values()
|
||||
print json_data
|
||||
self.failUnless(data == json_data)
|
||||
|
||||
|
||||
##############
|
||||
# CASE 1074 #
|
||||
##############
|
||||
def test_1074(self):
|
||||
self.case_no = self.get_case_number()
|
||||
self.log.info(' CASE %s log: ' % str(self.case_no))
|
||||
con=sqlite.connect('toaster.sqlite')
|
||||
cursor = con.cursor()
|
||||
query = "select name from orm_layersource;"
|
||||
cursor.execute(query)
|
||||
data = cursor.fetchall()
|
||||
for i in range(0,3):
|
||||
data[i] = data[i][0]
|
||||
print data
|
||||
json_parse = json.loads(open('toasterconf.json').read())
|
||||
json_data = []
|
||||
for i in range(0,3):
|
||||
json_data.append(json_parse['layersources'][i]['name'])
|
||||
print json_data
|
||||
self.failUnless(set(data) == set(json_data))
|
||||
|
||||
##############
|
||||
# CASE 1075 #
|
||||
##############
|
||||
def test_1075(self):
|
||||
self.case_no = self.get_case_number()
|
||||
self.log.info(' CASE %s log: ' % str(self.case_no))
|
||||
con=sqlite.connect('toaster.sqlite')
|
||||
cursor = con.cursor()
|
||||
query = "select value from orm_toastersetting where name like 'DEFAULT_RELEASE';"
|
||||
cursor.execute(query)
|
||||
data = cursor.fetchall()
|
||||
data = data[0][0]
|
||||
print data
|
||||
json_parse = json.loads(open('toasterconf.json').read())
|
||||
json_data = json_parse['defaultrelease']
|
||||
print json_data
|
||||
self.failUnless(set(data) == set(json_data))
|
||||
|
||||
##############
|
||||
# CASE 1076 #
|
||||
##############
|
||||
def test_1076(self):
|
||||
self.case_no = self.get_case_number()
|
||||
self.log.info(' CASE %s log: ' % str(self.case_no))
|
||||
|
||||
print 'Checking branches for "Local Yocto Project"'
|
||||
con=sqlite.connect('toaster.sqlite')
|
||||
cursor = con.cursor()
|
||||
query = "select name from orm_branch where layer_source_id=1;"
|
||||
cursor.execute(query)
|
||||
data = cursor.fetchall()
|
||||
for i in range(0,4):
|
||||
data[i] = data[i][0]
|
||||
print data
|
||||
json_parse = json.loads(open('toasterconf.json').read())
|
||||
json_data = json_parse['layersources'][0]['branches']
|
||||
print json_data
|
||||
self.failUnless(set(data) == set(json_data))
|
||||
|
||||
print 'Checking branches for "OpenEmbedded"'
|
||||
con=sqlite.connect('toaster.sqlite')
|
||||
cursor = con.cursor()
|
||||
query = "select name from orm_branch where layer_source_id=2;"
|
||||
cursor.execute(query)
|
||||
data = cursor.fetchall()
|
||||
for i in range(0,3):
|
||||
data[i] = data[i][0]
|
||||
print data
|
||||
json_parse = json.loads(open('toasterconf.json').read())
|
||||
json_data = json_parse['layersources'][1]['branches']
|
||||
print json_data
|
||||
self.failUnless(set(data) == set(json_data))
|
||||
|
||||
print 'Checking branches for "Imported layers"'
|
||||
con=sqlite.connect('toaster.sqlite')
|
||||
cursor = con.cursor()
|
||||
query = "select name from orm_branch where layer_source_id=3;"
|
||||
cursor.execute(query)
|
||||
data = cursor.fetchall()
|
||||
for i in range(0,4):
|
||||
data[i] = data[i][0]
|
||||
print data
|
||||
json_parse = json.loads(open('toasterconf.json').read())
|
||||
json_data = json_parse['layersources'][2]['branches']
|
||||
print json_data
|
||||
self.failUnless(set(data) == set(json_data))
|
||||
|
||||
|
||||
##############
|
||||
# CASE 1077 #
|
||||
##############
|
||||
def test_1077(self):
|
||||
self.case_no = self.get_case_number()
|
||||
self.log.info(' CASE %s log: ' % str(self.case_no))
|
||||
con=sqlite.connect('toaster.sqlite')
|
||||
cursor = con.cursor()
|
||||
query = "select name from orm_bitbakeversion;"
|
||||
cursor.execute(query)
|
||||
data = cursor.fetchall()
|
||||
for i in range(0,4):
|
||||
data[i] = data[i][0]
|
||||
print data
|
||||
json_parse = json.loads(open('toasterconf.json').read())
|
||||
json_data = []
|
||||
for i in range(0,4):
|
||||
json_data.append(json_parse['bitbake'][i]['name'])
|
||||
print json_data
|
||||
self.failUnless(set(data) == set(json_data))
|
||||
|
||||
##############
|
||||
# CASE 1083 #
|
||||
##############
|
||||
def test_1083(self):
|
||||
self.case_no = self.get_case_number()
|
||||
self.log.info(' CASE %s log: ' % str(self.case_no))
|
||||
self.driver.maximize_window()
|
||||
self.driver.get(self.base_url)
|
||||
self.driver.find_element_by_id("new-project-button").click()
|
||||
self.driver.find_element_by_id("new-project-name").send_keys("new-test-project")
|
||||
self.driver.find_element_by_id("create-project-button").click()
|
||||
con=sqlite.connect('toaster.sqlite')
|
||||
cursor = con.cursor()
|
||||
query = "select count(name) from orm_project where name = 'new-test-project';"
|
||||
cursor.execute(query)
|
||||
data = cursor.fetchone()
|
||||
print 'data: %s' % data
|
||||
self.failUnless(data >= 1)
|
||||
|
||||
##############
|
||||
# CASE 1084 #
|
||||
##############
|
||||
def test_1084(self):
|
||||
self.case_no = self.get_case_number()
|
||||
self.log.info(' CASE %s log: ' % str(self.case_no))
|
||||
self.driver.maximize_window()
|
||||
self.driver.get(self.base_url)
|
||||
self.driver.find_element_by_id("new-project-button").click()
|
||||
self.driver.find_element_by_id("new-project-name").send_keys("new-default-project")
|
||||
self.driver.find_element_by_id("create-project-button").click()
|
||||
con=sqlite.connect('toaster.sqlite')
|
||||
cursor = con.cursor()
|
||||
query = "select a.name from orm_release a, orm_project b where a.id = b.release_id and b.name = 'new-default-project' limit 1;"
|
||||
cursor.execute(query)
|
||||
db_data = str(cursor.fetchone()[0])
|
||||
json_parse = json.loads(open('toasterconf.json').read())
|
||||
json_data = str(json_parse['defaultrelease'])
|
||||
self.failUnless(db_data == json_data)
|
||||
|
||||
##############
|
||||
# CASE 1088 #
|
||||
##############
|
||||
def test_1088(self):
|
||||
self.case_no = self.get_case_number()
|
||||
self.log.info(' CASE %s log: ' % str(self.case_no))
|
||||
self.driver.maximize_window()
|
||||
self.driver.get(self.base_url)
|
||||
self.driver.find_element_by_css_selector("a[href='/toastergui/projects/']").click()
|
||||
self.driver.find_element_by_link_text('new-default-project').click()
|
||||
self.driver.find_element_by_id('project-change-form-toggle').click()
|
||||
self.driver.find_element_by_id('project-name-change-input').clear()
|
||||
self.driver.find_element_by_id('project-name-change-input').send_keys('new-name')
|
||||
self.driver.find_element_by_id('project-name-change-btn').click()
|
||||
con=sqlite.connect('toaster.sqlite')
|
||||
cursor = con.cursor()
|
||||
query = "select count(name) from orm_project where name = 'new-name';"
|
||||
cursor.execute(query)
|
||||
data = cursor.fetchone()[0]
|
||||
self.failUnless(data == 1)
|
||||
#reseting project name
|
||||
self.driver.find_element_by_id('project-change-form-toggle').click()
|
||||
self.driver.find_element_by_id('project-name-change-input').clear()
|
||||
self.driver.find_element_by_id('project-name-change-input').send_keys('new-default-project')
|
||||
self.driver.find_element_by_id('project-name-change-btn').click()
|
||||
|
||||
|
||||
##############
|
||||
# CASE 1089 #
|
||||
##############
|
||||
def test_1089(self):
|
||||
self.case_no = self.get_case_number()
|
||||
self.log.info(' CASE %s log: ' % str(self.case_no))
|
||||
self.driver.maximize_window()
|
||||
self.driver.get(self.base_url)
|
||||
self.driver.find_element_by_css_selector("a[href='/toastergui/projects/']").click()
|
||||
self.driver.find_element_by_link_text('new-default-project').click()
|
||||
self.driver.find_element_by_id('change-machine-toggle').click()
|
||||
self.driver.find_element_by_id('machine-change-input').clear()
|
||||
self.driver.find_element_by_id('machine-change-input').send_keys('qemuarm64')
|
||||
self.driver.find_element_by_id('machine-change-input').send_keys(Keys.RETURN)
|
||||
self.driver.find_element_by_id('machine-change-btn').click()
|
||||
con=sqlite.connect('toaster.sqlite')
|
||||
cursor = con.cursor()
|
||||
query = "select count(id) from orm_projectvariable where name like 'machine' and value like 'qemuarm64';"
|
||||
cursor.execute(query)
|
||||
data = cursor.fetchone()[0]
|
||||
self.failUnless(data == 1)
|
||||
#resetting machine to default value
|
||||
self.driver.find_element_by_id('change-machine-toggle').click()
|
||||
self.driver.find_element_by_id('machine-change-input').clear()
|
||||
self.driver.find_element_by_id('machine-change-input').send_keys('qemux86')
|
||||
self.driver.find_element_by_id('machine-change-input').send_keys(Keys.RETURN)
|
||||
self.driver.find_element_by_id('machine-change-btn').click()
|
||||
|
||||
##############
|
||||
# CASE 1090 #
|
||||
##############
|
||||
def test_1090(self):
|
||||
self.case_no = self.get_case_number()
|
||||
self.log.info(' CASE %s log: ' % str(self.case_no))
|
||||
con=sqlite.connect('toaster.sqlite')
|
||||
cursor = con.cursor()
|
||||
query = "select username from auth_user where is_superuser = 1;"
|
||||
cursor.execute(query)
|
||||
data = cursor.fetchall()
|
||||
try:
|
||||
data = data[0]
|
||||
except:
|
||||
pass
|
||||
print data
|
||||
self.failUnless(data == 'toaster_admin')
|
||||
|
||||
##############
|
||||
# CASE 1091 #
|
||||
##############
|
||||
def test_1091(self):
|
||||
self.case_no = self.get_case_number()
|
||||
self.log.info(' CASE %s log: ' % str(self.case_no))
|
||||
self.driver.maximize_window()
|
||||
self.driver.get(self.base_url)
|
||||
self.driver.find_element_by_css_selector("a[href='/toastergui/projects/']").click()
|
||||
self.driver.find_element_by_link_text('new-default-project').click()
|
||||
self.driver.find_element_by_id('release-change-toggle').click()
|
||||
dropdown = self.driver.find_element_by_css_selector('select')
|
||||
for option in dropdown.find_elements_by_tag_name('option'):
|
||||
if option.text == 'Local Yocto Project':
|
||||
option.click()
|
||||
self.driver.find_element_by_id('change-release-btn').click()
|
||||
#wait for the changes to register in the DB
|
||||
time.sleep(1)
|
||||
con=sqlite.connect('toaster.sqlite')
|
||||
cursor = con.cursor()
|
||||
query = "select count(*) from orm_layer_version a, orm_projectlayer b, orm_project c where a.\"commit\"=\"HEAD\" and a.id = b.layercommit_id and b.project_id=c.id and c.name='new-default-project';"
|
||||
cursor.execute(query)
|
||||
data = cursor.fetchone()[0]
|
||||
#resetting release to default
|
||||
self.driver.find_element_by_id('release-change-toggle').click()
|
||||
dropdown = self.driver.find_element_by_css_selector('select')
|
||||
for option in dropdown.find_elements_by_tag_name('option'):
|
||||
if option.text == 'Yocto Project master':
|
||||
option.click()
|
||||
self.driver.find_element_by_id('change-release-btn').click()
|
||||
#wait for the changes to register in the DB
|
||||
time.sleep(1)
|
||||
self.failUnless(data == 3)
|
||||
|
||||
##############
|
||||
# CASE 1092 #
|
||||
##############
|
||||
def test_1092(self):
|
||||
self.case_no = self.get_case_number()
|
||||
self.log.info(' CASE %s log: ' % str(self.case_no))
|
||||
self.driver.maximize_window()
|
||||
con=sqlite.connect('toaster.sqlite')
|
||||
cursor = con.cursor()
|
||||
query = "select a.name, a.value from orm_projectvariable a, orm_project b where a.project_id = b.id and b.name = 'new-default-project';"
|
||||
cursor.execute(query)
|
||||
data = dict(cursor.fetchall())
|
||||
print data
|
||||
default_values = {u'IMAGE_INSTALL_append': u'', u'PACKAGE_CLASSES': u'package_rpm', u'MACHINE': u'qemux86', u'SDKMACHINE': u'x86_64', u'DISTRO': u'poky', u'IMAGE_FSTYPES': u'ext3 jffs2 tar.bz2'}
|
||||
self.failUnless(data == default_values)
|
||||
|
||||
##############
|
||||
# CASE 1093 #
|
||||
##############
|
||||
def test_1093(self):
|
||||
self.case_no = self.get_case_number()
|
||||
self.log.info(' CASE %s log: ' % str(self.case_no))
|
||||
|
||||
#get initial values
|
||||
con=sqlite.connect('toaster.sqlite')
|
||||
cursor = con.cursor()
|
||||
query = "select layercommit_id from orm_projectlayer a, orm_project b where a.project_id=b.id and b.name='new-default-project';"
|
||||
cursor.execute(query)
|
||||
data_initial = cursor.fetchall()
|
||||
print data_initial
|
||||
|
||||
self.driver.maximize_window()
|
||||
self.driver.get('localhost:8000')#self.base_url)
|
||||
self.driver.find_element_by_css_selector("a[href='/toastergui/projects/']").click()
|
||||
self.driver.find_element_by_link_text('new-default-project').click()
|
||||
self.driver.find_element_by_id('release-change-toggle').click()
|
||||
dropdown = self.driver.find_element_by_css_selector('select')
|
||||
for option in dropdown.find_elements_by_tag_name('option'):
|
||||
if option.text == 'Local Yocto Project':
|
||||
option.click()
|
||||
self.driver.find_element_by_id('change-release-btn').click()
|
||||
#wait for the changes to register in the DB
|
||||
time.sleep(1)
|
||||
|
||||
#get changed values
|
||||
con=sqlite.connect('toaster.sqlite')
|
||||
cursor = con.cursor()
|
||||
query = "select layercommit_id from orm_projectlayer a, orm_project b where a.project_id=b.id and b.name='new-default-project';"
|
||||
cursor.execute(query)
|
||||
data_changed = cursor.fetchall()
|
||||
print data_changed
|
||||
|
||||
#resetting release to default
|
||||
self.driver.find_element_by_id('release-change-toggle').click()
|
||||
dropdown = self.driver.find_element_by_css_selector('select')
|
||||
for option in dropdown.find_elements_by_tag_name('option'):
|
||||
if option.text == 'Yocto Project master':
|
||||
option.click()
|
||||
self.driver.find_element_by_id('change-release-btn').click()
|
||||
#wait for the changes to register in the DB
|
||||
time.sleep(1)
|
||||
self.failUnless(data_initial != data_changed)
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
../../../../../../meta-yocto/conf/toasterconf.json
|
Loading…
Reference in New Issue