blob: 8ed6792ef6367fcc39406b7521723406109e3f82 [file] [log] [blame]
Brad Bishop96ff1982019-08-19 13:50:42 -04001#! /usr/bin/env python3
Brad Bishop6e60e8b2018-02-01 10:27:11 -05002#
3# BitBake Toaster Implementation
4#
5# Copyright (C) 2016 Intel Corporation
6#
Brad Bishopc342db32019-05-15 21:57:59 -04007# SPDX-License-Identifier: GPL-2.0-only
Brad Bishop6e60e8b2018-02-01 10:27:11 -05008#
Brad Bishop6e60e8b2018-02-01 10:27:11 -05009
10# Tests were part of openembedded-core oe selftest Authored by: Lucian Musat
11# Ionut Chisanovici, Paul Eggleton and Cristian Iorga
12
13"""
14Test toaster backend by playing build event log files
15using toaster-eventreplay script
16"""
17
18import os
19
20from subprocess import getstatusoutput
21from pathlib import Path
22
23from django.test import TestCase
24
25from orm.models import Target_Installed_Package, Package, Build
26
27class EventReplay(TestCase):
28 """Base class for eventreplay test cases"""
29
30 def setUp(self):
31 """
32 Setup build environment:
33 - set self.script to toaster-eventreplay path
34 - set self.eventplay_dir to the value of EVENTPLAY_DIR env variable
35 """
36 bitbake_dir = Path(__file__.split('lib/toaster')[0])
37 self.script = bitbake_dir / 'bin' / 'toaster-eventreplay'
38 self.assertTrue(self.script.exists(), "%s doesn't exist")
39 self.eventplay_dir = os.getenv("EVENTREPLAY_DIR")
40 self.assertTrue(self.eventplay_dir,
41 "Environment variable EVENTREPLAY_DIR is not set")
42
43 def _replay(self, eventfile):
44 """Run toaster-eventplay <eventfile>"""
45 eventpath = Path(self.eventplay_dir) / eventfile
46 status, output = getstatusoutput('%s %s' % (self.script, eventpath))
47 if status:
48 print(output)
49
50 self.assertEqual(status, 0)
51
52class CoreImageMinimalEventReplay(EventReplay):
53 """Replay core-image-minimal events"""
54
55 def test_installed_packages(self):
56 """Test if all required packages have been installed"""
57
58 self._replay('core-image-minimal.events')
59
60 # test installed packages
61 packages = sorted(Target_Installed_Package.objects.\
62 values_list('package__name', flat=True))
63 self.assertEqual(packages, ['base-files', 'base-passwd', 'busybox',
64 'busybox-hwclock', 'busybox-syslog',
65 'busybox-udhcpc', 'eudev', 'glibc',
66 'init-ifupdown', 'initscripts',
67 'initscripts-functions', 'kernel-base',
68 'kernel-module-uvesafb', 'libkmod',
69 'modutils-initscripts', 'netbase',
70 'packagegroup-core-boot', 'run-postinsts',
71 'sysvinit', 'sysvinit-inittab',
72 'sysvinit-pidof', 'udev-cache',
73 'update-alternatives-opkg',
74 'update-rc.d', 'util-linux-libblkid',
75 'util-linux-libuuid', 'v86d', 'zlib'])
76
77class ZlibEventReplay(EventReplay):
78 """Replay zlib events"""
79
80 def test_replay_zlib(self):
81 """Test if zlib build and package are in the database"""
82 self._replay("zlib.events")
83
84 self.assertEqual(Build.objects.last().target_set.last().target, "zlib")
85 self.assertTrue('zlib' in Package.objects.values_list('name', flat=True))