blob: 695661947ac9dca83d95a1c566c0fcb1f2b3b648 [file] [log] [blame]
Brad Bishop6e60e8b2018-02-01 10:27:11 -05001#! /usr/bin/env python
2# ex:ts=4:sw=4:sts=4:et
3# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
4#
5# BitBake Toaster Implementation
6#
7# Copyright (C) 2016 Intel Corporation
8#
9# This program is free software; you can redistribute it and/or modify
10# it under the terms of the GNU General Public License version 2 as
11# published by the Free Software Foundation.
12#
13# This program is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16# GNU General Public License for more details.
17#
18# You should have received a copy of the GNU General Public License along
19# with this program; if not, write to the Free Software Foundation, Inc.,
20# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21
22# Tests were part of openembedded-core oe selftest Authored by: Lucian Musat
23# Ionut Chisanovici, Paul Eggleton and Cristian Iorga
24
25"""
26Test toaster backend by playing build event log files
27using toaster-eventreplay script
28"""
29
30import os
31
32from subprocess import getstatusoutput
33from pathlib import Path
34
35from django.test import TestCase
36
37from orm.models import Target_Installed_Package, Package, Build
38
39class EventReplay(TestCase):
40 """Base class for eventreplay test cases"""
41
42 def setUp(self):
43 """
44 Setup build environment:
45 - set self.script to toaster-eventreplay path
46 - set self.eventplay_dir to the value of EVENTPLAY_DIR env variable
47 """
48 bitbake_dir = Path(__file__.split('lib/toaster')[0])
49 self.script = bitbake_dir / 'bin' / 'toaster-eventreplay'
50 self.assertTrue(self.script.exists(), "%s doesn't exist")
51 self.eventplay_dir = os.getenv("EVENTREPLAY_DIR")
52 self.assertTrue(self.eventplay_dir,
53 "Environment variable EVENTREPLAY_DIR is not set")
54
55 def _replay(self, eventfile):
56 """Run toaster-eventplay <eventfile>"""
57 eventpath = Path(self.eventplay_dir) / eventfile
58 status, output = getstatusoutput('%s %s' % (self.script, eventpath))
59 if status:
60 print(output)
61
62 self.assertEqual(status, 0)
63
64class CoreImageMinimalEventReplay(EventReplay):
65 """Replay core-image-minimal events"""
66
67 def test_installed_packages(self):
68 """Test if all required packages have been installed"""
69
70 self._replay('core-image-minimal.events')
71
72 # test installed packages
73 packages = sorted(Target_Installed_Package.objects.\
74 values_list('package__name', flat=True))
75 self.assertEqual(packages, ['base-files', 'base-passwd', 'busybox',
76 'busybox-hwclock', 'busybox-syslog',
77 'busybox-udhcpc', 'eudev', 'glibc',
78 'init-ifupdown', 'initscripts',
79 'initscripts-functions', 'kernel-base',
80 'kernel-module-uvesafb', 'libkmod',
81 'modutils-initscripts', 'netbase',
82 'packagegroup-core-boot', 'run-postinsts',
83 'sysvinit', 'sysvinit-inittab',
84 'sysvinit-pidof', 'udev-cache',
85 'update-alternatives-opkg',
86 'update-rc.d', 'util-linux-libblkid',
87 'util-linux-libuuid', 'v86d', 'zlib'])
88
89class ZlibEventReplay(EventReplay):
90 """Replay zlib events"""
91
92 def test_replay_zlib(self):
93 """Test if zlib build and package are in the database"""
94 self._replay("zlib.events")
95
96 self.assertEqual(Build.objects.last().target_set.last().target, "zlib")
97 self.assertTrue('zlib' in Package.objects.values_list('name', flat=True))