1import time
2
3from tests.package.test_python import TestPythonPackageBase
4
5
6class TestPythonDjango(TestPythonPackageBase):
7    config = TestPythonPackageBase.config
8    sample_scripts = ["tests/package/sample_python_django.py"]
9
10    def run_sample_scripts(self):
11        timeout = 35
12
13        cmd = "cd /opt && /usr/bin/django-admin startproject testsite"
14        self.assertRunOk(cmd, timeout=timeout)
15
16        cmd = "cd /opt/testsite && " + self.interpreter + " ./manage.py migrate"
17        output, exit_code = self.emulator.run(cmd, timeout=timeout)
18        self.assertIn("Operations to perform:", output[0])
19        self.assertEqual(exit_code, 0)
20
21        cmd = "cd /opt/testsite && " + self.interpreter + " ./manage.py runserver 0.0.0.0:1234 > /dev/null 2>&1 & "
22        self.assertRunOk(cmd, timeout=timeout)
23        # give some time to setup the server
24        for attempt in range(30 * self.emulator.timeout_multiplier):
25            time.sleep(1)
26            cmd = "netstat -ltn 2>/dev/null | grep 0.0.0.0:1234"
27            _, exit_code = self.emulator.run(cmd)
28            if exit_code == 0:
29                break
30        self.assertEqual(exit_code, 0, "Timeout while waiting for django server")
31
32
33class TestPythonPy3Django(TestPythonDjango):
34    __test__ = True
35    config = TestPythonDjango.config + \
36        """
37        BR2_PACKAGE_PYTHON3=y
38        BR2_PACKAGE_PYTHON_DJANGO=y
39        BR2_PACKAGE_PYTHON3_SQLITE=y
40        """
41