xref: /aosp_15_r20/external/autotest/frontend/tko/models_test.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1*9c5db199SXin Li#!/usr/bin/python3
2*9c5db199SXin Li# pylint: disable=missing-docstring
3*9c5db199SXin Li
4*9c5db199SXin Liimport unittest
5*9c5db199SXin Li
6*9c5db199SXin Liimport common
7*9c5db199SXin Lifrom autotest_lib.frontend import setup_django_environment
8*9c5db199SXin Lifrom autotest_lib.frontend import setup_test_environment
9*9c5db199SXin Lifrom autotest_lib.frontend.tko import models
10*9c5db199SXin Li
11*9c5db199SXin Li
12*9c5db199SXin Liclass TKOTestTest(unittest.TestCase):
13*9c5db199SXin Li
14*9c5db199SXin Li    def setUp(self):
15*9c5db199SXin Li        setup_test_environment.set_up()
16*9c5db199SXin Li        self.machine1 = models.Machine.objects.create(hostname='myhost')
17*9c5db199SXin Li        self.good_status = models.Status.objects.create(word='GOOD')
18*9c5db199SXin Li        kernel_name = 'mykernel1'
19*9c5db199SXin Li        self.kernel1 = models.Kernel.objects.create(kernel_hash=kernel_name,
20*9c5db199SXin Li                                               base=kernel_name,
21*9c5db199SXin Li                                               printable=kernel_name)
22*9c5db199SXin Li        self.job1 = models.Job.objects.create(
23*9c5db199SXin Li                tag='1-myjobtag1', label='myjob1',
24*9c5db199SXin Li                username='myuser', machine=self.machine1,
25*9c5db199SXin Li                afe_job_id=1)
26*9c5db199SXin Li        self.job1_test1 = models.Test.objects.create(
27*9c5db199SXin Li                job=self.job1, test='mytest1',
28*9c5db199SXin Li                kernel=self.kernel1,
29*9c5db199SXin Li                status=self.good_status,
30*9c5db199SXin Li                machine=self.machine1)
31*9c5db199SXin Li
32*9c5db199SXin Li
33*9c5db199SXin Li    def tearDown(self):
34*9c5db199SXin Li        setup_test_environment.tear_down()
35*9c5db199SXin Li
36*9c5db199SXin Li
37*9c5db199SXin Li    def _get_attributes(self, test):
38*9c5db199SXin Li        models.Test.objects.populate_relationships(
39*9c5db199SXin Li                [test], models.TestAttribute, 'attribute_list')
40*9c5db199SXin Li        return dict((attribute.attribute, attribute.value)
41*9c5db199SXin Li                    for attribute in test.attribute_list)
42*9c5db199SXin Li
43*9c5db199SXin Li    def test_delete_attribute(self):
44*9c5db199SXin Li        test1 = self.job1_test1
45*9c5db199SXin Li        test1.set_attribute('test_attribute1', 'test_value1')
46*9c5db199SXin Li
47*9c5db199SXin Li        attributes = self._get_attributes(test1)
48*9c5db199SXin Li        self.assertEquals(attributes['test_attribute1'], 'test_value1')
49*9c5db199SXin Li
50*9c5db199SXin Li        test1.set_or_delete_attribute('test_attribute1', None)
51*9c5db199SXin Li        attributes = self._get_attributes(test1)
52*9c5db199SXin Li        self.assertNotIn('test_attribute1', attributes.keys())
53*9c5db199SXin Li
54*9c5db199SXin Li
55*9c5db199SXin Li    def test_set_attribute(self):
56*9c5db199SXin Li        # Verify adding static attribute in model_logic doesn't break TKO Test.
57*9c5db199SXin Li        test1 = self.job1_test1
58*9c5db199SXin Li        test1.set_attribute('test_attribute1', 'test_value1')
59*9c5db199SXin Li        test1.set_or_delete_attribute('test_attribute1', 'test_value2')
60*9c5db199SXin Li        attributes = self._get_attributes(test1)
61*9c5db199SXin Li        self.assertEquals(attributes['test_attribute1'], 'test_value2')
62