blob: 3606cba4f57635aa1544853e23db842fb2bb2f77 [file] [log] [blame]
#! /usr/bin/env python
#
# BitBake Toaster Implementation
#
# Copyright (C) 2016 Intel Corporation
#
# SPDX-License-Identifier: GPL-2.0-only
#
# Tests were part of openembedded-core oe selftest Authored by: Lucian Musat
# Ionut Chisanovici, Paul Eggleton and Cristian Iorga
"""
Test toaster backend by playing build event log files
using toaster-eventreplay script
"""
import os
from subprocess import getstatusoutput
from pathlib import Path
from django.test import TestCase
from orm.models import Target_Installed_Package, Package, Build
class EventReplay(TestCase):
"""Base class for eventreplay test cases"""
def setUp(self):
"""
Setup build environment:
- set self.script to toaster-eventreplay path
- set self.eventplay_dir to the value of EVENTPLAY_DIR env variable
"""
bitbake_dir = Path(__file__.split('lib/toaster')[0])
self.script = bitbake_dir / 'bin' / 'toaster-eventreplay'
self.assertTrue(self.script.exists(), "%s doesn't exist")
self.eventplay_dir = os.getenv("EVENTREPLAY_DIR")
self.assertTrue(self.eventplay_dir,
"Environment variable EVENTREPLAY_DIR is not set")
def _replay(self, eventfile):
"""Run toaster-eventplay <eventfile>"""
eventpath = Path(self.eventplay_dir) / eventfile
status, output = getstatusoutput('%s %s' % (self.script, eventpath))
if status:
print(output)
self.assertEqual(status, 0)
class CoreImageMinimalEventReplay(EventReplay):
"""Replay core-image-minimal events"""
def test_installed_packages(self):
"""Test if all required packages have been installed"""
self._replay('core-image-minimal.events')
# test installed packages
packages = sorted(Target_Installed_Package.objects.\
values_list('package__name', flat=True))
self.assertEqual(packages, ['base-files', 'base-passwd', 'busybox',
'busybox-hwclock', 'busybox-syslog',
'busybox-udhcpc', 'eudev', 'glibc',
'init-ifupdown', 'initscripts',
'initscripts-functions', 'kernel-base',
'kernel-module-uvesafb', 'libkmod',
'modutils-initscripts', 'netbase',
'packagegroup-core-boot', 'run-postinsts',
'sysvinit', 'sysvinit-inittab',
'sysvinit-pidof', 'udev-cache',
'update-alternatives-opkg',
'update-rc.d', 'util-linux-libblkid',
'util-linux-libuuid', 'v86d', 'zlib'])
class ZlibEventReplay(EventReplay):
"""Replay zlib events"""
def test_replay_zlib(self):
"""Test if zlib build and package are in the database"""
self._replay("zlib.events")
self.assertEqual(Build.objects.last().target_set.last().target, "zlib")
self.assertTrue('zlib' in Package.objects.values_list('name', flat=True))