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