12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #! /usr/bin/env python
- #
- # BitBake Toaster Implementation
- #
- # Copyright (C) 2016 Intel Corporation
- #
- # SPDX-License-Identifier: GPL-2.0-only
- #
- import os
- from django.test import TestCase
- from django.core import management
- from orm.models import signal_runbuilds
- import threading
- import time
- import subprocess
- import signal
- class KillRunbuilds(threading.Thread):
- """ Kill the runbuilds process after an amount of time """
- def __init__(self, *args, **kwargs):
- super(KillRunbuilds, self).__init__(*args, **kwargs)
- self.setDaemon(True)
- def run(self):
- time.sleep(5)
- signal_runbuilds()
- time.sleep(1)
- pidfile_path = os.path.join(os.environ.get("BUILDDIR", "."),
- ".runbuilds.pid")
- with open(pidfile_path) as pidfile:
- pid = pidfile.read()
- os.kill(int(pid), signal.SIGTERM)
- class TestCommands(TestCase):
- """ Sanity test that runbuilds executes OK """
- def setUp(self):
- os.environ.setdefault("DJANGO_SETTINGS_MODULE",
- "toastermain.settings_test")
- os.environ.setdefault("BUILDDIR",
- "/tmp/")
- # Setup a real database if needed for runbuilds process
- # to connect to
- management.call_command('migrate')
- def test_runbuilds_command(self):
- kill_runbuilds = KillRunbuilds()
- kill_runbuilds.start()
- manage_py = os.path.join(
- os.path.dirname(os.path.abspath(__file__)),
- os.pardir,
- os.pardir,
- "manage.py")
- command = "%s runbuilds" % manage_py
- process = subprocess.Popen(command,
- shell=True,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- (out, err) = process.communicate()
- process.wait()
- self.assertNotEqual(process.returncode, 1,
- "Runbuilds returned an error %s" % err)
|