ptf/saischeduler.py (564 lines of code) (raw):

# Copyright 2021-present Intel Corporation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ Thrift SAI interface Scheduler tests """ from sai_thrift.sai_headers import * from sai_base_test import * @group("draft") class SchedulerParamsTest(SaiHelper): ''' Basic scheduler parameters tests ''' def setUp(self): super(SchedulerParamsTest, self).setUp() queue_list = sai_thrift_object_list_t(count=10) port_attr = sai_thrift_get_port_attribute( self.client, self.port1, qos_queue_list=queue_list) self.test_queue = port_attr['qos_queue_list'].idlist[0] def runTest(self): self.schedulerWeightTest() self.schedulerStictPriorityTest() self.schedulerMinBwidthRateTest() self.schedulerMaxBwidthRateTest() self.schedulerMinBwidthBurstRateTest() self.schedulerMaxBwidthBurstRateTest() def schedulerWeightTest(self): ''' Verify creation of scheduler with scheduling type DWRR ''' print("\nschedulerWeightTest()") try: sched = sai_thrift_create_scheduler( self.client, meter_type=SAI_METER_TYPE_PACKETS, scheduling_type=SAI_SCHEDULING_TYPE_DWRR, scheduling_weight=2) self.assertNotEqual(sched, 0) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, meter_type=True, scheduling_type=True, scheduling_weight=True) self.assertEqual(sched_attr['meter_type'], SAI_METER_TYPE_PACKETS) self.assertEqual(sched_attr['scheduling_type'], SAI_SCHEDULING_TYPE_DWRR) self.assertEqual(sched_attr['scheduling_weight'], 2) status = sai_thrift_set_queue_attribute( self.client, self.test_queue, scheduler_profile_id=sched) self.assertEqual(status, SAI_STATUS_SUCCESS) queue_attr = sai_thrift_get_queue_attribute( self.client, self.test_queue, scheduler_profile_id=True) self.assertEqual(queue_attr['scheduler_profile_id'], sched) status = sai_thrift_set_scheduler_attribute( self.client, sched, scheduling_weight=4) self.assertEqual(status, SAI_STATUS_SUCCESS) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, scheduling_weight=True) self.assertEqual(sched_attr['scheduling_weight'], 4) finally: sai_thrift_set_queue_attribute( self.client, self.test_queue, scheduler_profile_id=0) sai_thrift_remove_scheduler(self.client, sched) def schedulerStictPriorityTest(self): ''' Verify creation of scheduler with priority set ''' print("\nschedulerStrictPriorityTest()") try: sched = sai_thrift_create_scheduler( self.client, meter_type=SAI_METER_TYPE_PACKETS, scheduling_type=SAI_SCHEDULING_TYPE_STRICT) self.assertNotEqual(sched, 0) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, meter_type=True, scheduling_type=True) self.assertEqual(sched_attr['meter_type'], SAI_METER_TYPE_PACKETS) self.assertEqual(sched_attr['scheduling_type'], SAI_SCHEDULING_TYPE_STRICT) status = sai_thrift_set_queue_attribute( self.client, self.test_queue, scheduler_profile_id=sched) self.assertEqual(status, SAI_STATUS_SUCCESS) queue_attr = sai_thrift_get_queue_attribute( self.client, self.test_queue, scheduler_profile_id=True) self.assertEqual(queue_attr['scheduler_profile_id'], sched) finally: sai_thrift_set_queue_attribute( self.client, self.test_queue, scheduler_profile_id=0) sai_thrift_remove_scheduler(self.client, sched) def schedulerMinBwidthRateTest(self): ''' Verify creation of scheduler with min bandwidth rate set ''' print("\nschedulerMinBwidthRateTest()") try: sched = sai_thrift_create_scheduler( self.client, meter_type=SAI_METER_TYPE_PACKETS, min_bandwidth_rate=100, scheduling_type=SAI_SCHEDULING_TYPE_STRICT) self.assertNotEqual(sched, 0) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, meter_type=True, min_bandwidth_rate=True, scheduling_type=True) self.assertEqual(sched_attr['meter_type'], SAI_METER_TYPE_PACKETS) self.assertEqual(sched_attr['min_bandwidth_rate'], 100) self.assertEqual(sched_attr['scheduling_type'], SAI_SCHEDULING_TYPE_STRICT) status = sai_thrift_set_queue_attribute( self.client, self.test_queue, scheduler_profile_id=sched) self.assertEqual(status, SAI_STATUS_SUCCESS) queue_attr = sai_thrift_get_queue_attribute( self.client, self.test_queue, scheduler_profile_id=True) self.assertEqual(queue_attr['scheduler_profile_id'], sched) status = sai_thrift_set_scheduler_attribute( self.client, sched, min_bandwidth_rate=200) self.assertEqual(status, SAI_STATUS_SUCCESS) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, min_bandwidth_rate=True) self.assertEqual(sched_attr['min_bandwidth_rate'], 200) finally: sai_thrift_set_queue_attribute( self.client, self.test_queue, scheduler_profile_id=0) sai_thrift_remove_scheduler(self.client, sched) def schedulerMaxBwidthRateTest(self): ''' Verify creation of scheduler with max bandwidth rate set ''' print("\nschedulerMaxBwidthRateTest()") try: sched = sai_thrift_create_scheduler( self.client, meter_type=SAI_METER_TYPE_PACKETS, max_bandwidth_rate=1000, scheduling_type=SAI_SCHEDULING_TYPE_STRICT) self.assertNotEqual(sched, 0) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, meter_type=True, max_bandwidth_rate=True, scheduling_type=True) self.assertEqual(sched_attr['meter_type'], SAI_METER_TYPE_PACKETS) self.assertEqual(sched_attr['max_bandwidth_rate'], 1000) self.assertEqual(sched_attr['scheduling_type'], SAI_SCHEDULING_TYPE_STRICT) status = sai_thrift_set_queue_attribute( self.client, self.test_queue, scheduler_profile_id=sched) self.assertEqual(status, SAI_STATUS_SUCCESS) queue_attr = sai_thrift_get_queue_attribute( self.client, self.test_queue, scheduler_profile_id=True) self.assertEqual(queue_attr['scheduler_profile_id'], sched) status = sai_thrift_set_scheduler_attribute( self.client, sched, max_bandwidth_rate=2000) self.assertEqual(status, SAI_STATUS_SUCCESS) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, max_bandwidth_rate=True) self.assertEqual(sched_attr['max_bandwidth_rate'], 2000) finally: sai_thrift_set_queue_attribute( self.client, self.test_queue, scheduler_profile_id=0) sai_thrift_remove_scheduler(self.client, sched) def schedulerMinBwidthBurstRateTest(self): ''' Verify creation of scheduler with min bandwidth burst rate set ''' print("\nschedulerMinBwidthBurstRateTest()") try: sched = sai_thrift_create_scheduler( self.client, meter_type=SAI_METER_TYPE_PACKETS, min_bandwidth_burst_rate=100, scheduling_type=SAI_SCHEDULING_TYPE_STRICT) self.assertNotEqual(sched, 0) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, meter_type=True, min_bandwidth_burst_rate=True, scheduling_type=True) self.assertEqual(sched_attr['meter_type'], SAI_METER_TYPE_PACKETS) self.assertEqual(sched_attr['min_bandwidth_burst_rate'], 100) self.assertEqual(sched_attr['scheduling_type'], SAI_SCHEDULING_TYPE_STRICT) status = sai_thrift_set_queue_attribute( self.client, self.test_queue, scheduler_profile_id=sched) self.assertEqual(status, SAI_STATUS_SUCCESS) queue_attr = sai_thrift_get_queue_attribute( self.client, self.test_queue, scheduler_profile_id=True) self.assertEqual(queue_attr['scheduler_profile_id'], sched) status = sai_thrift_set_scheduler_attribute( self.client, sched, min_bandwidth_burst_rate=200) self.assertEqual(status, SAI_STATUS_SUCCESS) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, min_bandwidth_burst_rate=True) self.assertEqual(sched_attr['min_bandwidth_burst_rate'], 200) finally: sai_thrift_set_queue_attribute( self.client, self.test_queue, scheduler_profile_id=0) sai_thrift_remove_scheduler(self.client, sched) def schedulerMaxBwidthBurstRateTest(self): ''' Verify creation of scheduler with max bandwidth burst rate set ''' print("\nschedulerMaxBwidthBurstRateTest()") try: sched = sai_thrift_create_scheduler( self.client, meter_type=SAI_METER_TYPE_PACKETS, max_bandwidth_burst_rate=1000, scheduling_type=SAI_SCHEDULING_TYPE_STRICT) self.assertNotEqual(sched, 0) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, meter_type=True, max_bandwidth_burst_rate=True, scheduling_type=True) self.assertEqual(sched_attr['meter_type'], SAI_METER_TYPE_PACKETS) self.assertEqual(sched_attr['max_bandwidth_burst_rate'], 1000) self.assertEqual(sched_attr['scheduling_type'], SAI_SCHEDULING_TYPE_STRICT) status = sai_thrift_set_queue_attribute(self.client, self.test_queue, scheduler_profile_id=sched) self.assertEqual(status, SAI_STATUS_SUCCESS) queue_attr = sai_thrift_get_queue_attribute( self.client, self.test_queue, scheduler_profile_id=True) self.assertEqual(queue_attr['scheduler_profile_id'], sched) status = sai_thrift_set_scheduler_attribute( self.client, sched, max_bandwidth_burst_rate=2000) self.assertEqual(status, SAI_STATUS_SUCCESS) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, max_bandwidth_burst_rate=True) self.assertEqual(sched_attr['max_bandwidth_burst_rate'], 2000) finally: sai_thrift_set_queue_attribute( self.client, self.test_queue, scheduler_profile_id=0) sai_thrift_remove_scheduler(self.client, sched) @group("draft") class SchedulerGroupAttachTest(SaiHelper): ''' Verify possibilities of attaching scheduler with different params set to a scheduler group ''' def setUp(self): super(SchedulerGroupAttachTest, self).setUp() try: self.schgroup = sai_thrift_create_scheduler_group( self.client, level=0, port_id=self.port1) self.assertNotEqual(self.schgroup, 0) except BaseException: print("Failed to create scheduler group") def runTest(self): self.schedulerWeightGroupAttachTest() self.schedulerStrictPriorityGroupAttachTest() self.schedulerMinBwidthRateGroupAttachTest() self.schedulerMaxBwidthRateGroupAttachTest() self.schedulerMinBwidthBurstRateGroupAttachTest() self.schedulerMaxBwidthBurstRateGroupAttachTest() def tearDown(self): sai_thrift_remove_scheduler_group(self.client, self.schgroup) super(SchedulerGroupAttachTest, self).tearDown() def schedulerWeightGroupAttachTest(self): ''' Verify creation of scheduler with scheduling type DWRR and attaching it to a scheduler group ''' print("\nschedulerWeightGroupAttachTest()") try: sched = sai_thrift_create_scheduler( self.client, meter_type=SAI_METER_TYPE_PACKETS, scheduling_type=SAI_SCHEDULING_TYPE_DWRR, scheduling_weight=2) self.assertNotEqual(sched, 0) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, meter_type=True, scheduling_type=True, scheduling_weight=True) self.assertEqual(sched_attr['meter_type'], SAI_METER_TYPE_PACKETS) self.assertEqual(sched_attr['scheduling_type'], SAI_SCHEDULING_TYPE_DWRR) self.assertEqual(sched_attr['scheduling_weight'], 2) status = sai_thrift_set_scheduler_group_attribute( self.client, self.schgroup, scheduler_profile_id=sched) self.assertEqual(status, SAI_STATUS_SUCCESS) schgroup_attr = sai_thrift_get_scheduler_group_attribute( self.client, self.schgroup, scheduler_profile_id=True) self.assertEqual(schgroup_attr['scheduler_profile_id'], sched) status = sai_thrift_set_scheduler_attribute( self.client, sched, scheduling_weight=4) self.assertEqual(status, SAI_STATUS_SUCCESS) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, scheduling_weight=True) self.assertEqual(sched_attr['scheduling_weight'], 4) finally: sai_thrift_set_scheduler_group_attribute( self.client, self.schgroup, scheduler_profile_id=0) sai_thrift_remove_scheduler(self.client, sched) def schedulerStrictPriorityGroupAttachTest(self): ''' Verify creation of scheduler with priority set and attaching it to a scheduler group ''' print("\nschedulerStrictPriorityGroupAttachTest()") try: sched = sai_thrift_create_scheduler( self.client, meter_type=SAI_METER_TYPE_PACKETS, scheduling_type=SAI_SCHEDULING_TYPE_STRICT) self.assertNotEqual(sched, 0) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, meter_type=True, scheduling_type=True) self.assertEqual(sched_attr['meter_type'], SAI_METER_TYPE_PACKETS) self.assertEqual(sched_attr['scheduling_type'], SAI_SCHEDULING_TYPE_STRICT) status = sai_thrift_set_scheduler_group_attribute( self.client, self.schgroup, scheduler_profile_id=sched) self.assertEqual(status, SAI_STATUS_SUCCESS) schgroup_attr = sai_thrift_get_scheduler_group_attribute( self.client, self.schgroup, scheduler_profile_id=True) self.assertEqual(schgroup_attr['scheduler_profile_id'], sched) status = sai_thrift_set_scheduler_attribute( self.client, sched, scheduling_weight=4) self.assertEqual(status, SAI_STATUS_SUCCESS) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, scheduling_weight=True) self.assertEqual(sched_attr['scheduling_weight'], 4) finally: sai_thrift_set_scheduler_group_attribute( self.client, self.schgroup, scheduler_profile_id=0) sai_thrift_remove_scheduler(self.client, sched) def schedulerMinBwidthRateGroupAttachTest(self): ''' Verify creation of scheduler with min bandwidth rate set and attaching it to a scheduler group ''' print("\nschedulerMinBwidthRateGroupAttachTest()") try: sched = sai_thrift_create_scheduler( self.client, meter_type=SAI_METER_TYPE_PACKETS, min_bandwidth_rate=100, scheduling_type=SAI_SCHEDULING_TYPE_STRICT) self.assertNotEqual(sched, 0) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, meter_type=True, min_bandwidth_rate=True, scheduling_type=True) self.assertEqual(sched_attr['meter_type'], SAI_METER_TYPE_PACKETS) self.assertEqual(sched_attr['min_bandwidth_rate'], 100) self.assertEqual(sched_attr['scheduling_type'], SAI_SCHEDULING_TYPE_STRICT) status = sai_thrift_set_scheduler_group_attribute( self.client, self.schgroup, scheduler_profile_id=sched) self.assertEqual(status, SAI_STATUS_SUCCESS) schgroup_attr = sai_thrift_get_scheduler_group_attribute( self.client, self.schgroup, scheduler_profile_id=True) self.assertEqual(schgroup_attr['scheduler_profile_id'], sched) status = sai_thrift_set_scheduler_attribute( self.client, sched, min_bandwidth_rate=200) self.assertEqual(status, SAI_STATUS_SUCCESS) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, min_bandwidth_rate=True) self.assertEqual(sched_attr['min_bandwidth_rate'], 200) finally: sai_thrift_set_scheduler_group_attribute( self.client, self.schgroup, scheduler_profile_id=0) sai_thrift_remove_scheduler(self.client, sched) def schedulerMaxBwidthRateGroupAttachTest(self): ''' Verify creation of scheduler with max bandwidth rate set and attaching it to a scheduler group ''' print("\nschedulerMaxBwidthRateGroupAttachTest()") try: sched = sai_thrift_create_scheduler( self.client, meter_type=SAI_METER_TYPE_PACKETS, max_bandwidth_rate=1000, scheduling_type=SAI_SCHEDULING_TYPE_STRICT) self.assertNotEqual(sched, 0) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, meter_type=True, max_bandwidth_rate=True, scheduling_type=True) self.assertEqual(sched_attr['meter_type'], SAI_METER_TYPE_PACKETS) self.assertEqual(sched_attr['max_bandwidth_rate'], 1000) self.assertEqual(sched_attr['scheduling_type'], SAI_SCHEDULING_TYPE_STRICT) status = sai_thrift_set_scheduler_group_attribute( self.client, self.schgroup, scheduler_profile_id=sched) self.assertEqual(status, SAI_STATUS_SUCCESS) schgroup_attr = sai_thrift_get_scheduler_group_attribute( self.client, self.schgroup, scheduler_profile_id=True) self.assertEqual(schgroup_attr['scheduler_profile_id'], sched) status = sai_thrift_set_scheduler_attribute( self.client, sched, max_bandwidth_rate=2000) self.assertEqual(status, SAI_STATUS_SUCCESS) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, max_bandwidth_rate=True) self.assertEqual(sched_attr['max_bandwidth_rate'], 2000) finally: sai_thrift_set_scheduler_group_attribute( self.client, self.schgroup, scheduler_profile_id=0) sai_thrift_remove_scheduler(self.client, sched) def schedulerMinBwidthBurstRateGroupAttachTest(self): ''' Verify creation of scheduler with min bandwidth burst rate set and attaching it to a scheduler group ''' print("\nschedulerMinBwidthBurstRateGroupAttachTest()") try: sched = sai_thrift_create_scheduler( self.client, meter_type=SAI_METER_TYPE_PACKETS, min_bandwidth_burst_rate=100, scheduling_type=SAI_SCHEDULING_TYPE_STRICT) self.assertNotEqual(sched, 0) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, meter_type=True, min_bandwidth_burst_rate=True, scheduling_type=True) self.assertEqual(sched_attr['meter_type'], SAI_METER_TYPE_PACKETS) self.assertEqual(sched_attr['min_bandwidth_burst_rate'], 100) self.assertEqual(sched_attr['scheduling_type'], SAI_SCHEDULING_TYPE_STRICT) status = sai_thrift_set_scheduler_group_attribute( self.client, self.schgroup, scheduler_profile_id=sched) self.assertEqual(status, SAI_STATUS_SUCCESS) schgroup_attr = sai_thrift_get_scheduler_group_attribute( self.client, self.schgroup, scheduler_profile_id=True) self.assertEqual(schgroup_attr['scheduler_profile_id'], sched) status = sai_thrift_set_scheduler_attribute( self.client, sched, min_bandwidth_burst_rate=200) self.assertEqual(status, SAI_STATUS_SUCCESS) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, min_bandwidth_burst_rate=True) self.assertEqual(sched_attr['min_bandwidth_burst_rate'], 200) finally: sai_thrift_set_scheduler_group_attribute( self.client, self.schgroup, scheduler_profile_id=0) sai_thrift_remove_scheduler(self.client, sched) def schedulerMaxBwidthBurstRateGroupAttachTest(self): ''' Verify creation of scheduler with max bandwidth burst rate set and attaching it to a scheduler group ''' print("\nschedulerMaxBwidthBurstRateGroupAttachTest()") try: sched = sai_thrift_create_scheduler( self.client, meter_type=SAI_METER_TYPE_PACKETS, max_bandwidth_burst_rate=1000, scheduling_type=SAI_SCHEDULING_TYPE_STRICT) self.assertNotEqual(sched, 0) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, meter_type=True, max_bandwidth_burst_rate=True, scheduling_type=True) self.assertEqual(sched_attr['meter_type'], SAI_METER_TYPE_PACKETS) self.assertEqual(sched_attr['max_bandwidth_burst_rate'], 1000) self.assertEqual(sched_attr['scheduling_type'], SAI_SCHEDULING_TYPE_STRICT) status = sai_thrift_set_scheduler_group_attribute( self.client, self.schgroup, scheduler_profile_id=sched) self.assertEqual(status, SAI_STATUS_SUCCESS) schgroup_attr = sai_thrift_get_scheduler_group_attribute( self.client, self.schgroup, scheduler_profile_id=True) self.assertEqual(schgroup_attr['scheduler_profile_id'], sched) status = sai_thrift_set_scheduler_attribute( self.client, sched, max_bandwidth_burst_rate=2000) self.assertEqual(status, SAI_STATUS_SUCCESS) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, max_bandwidth_burst_rate=True) self.assertEqual(sched_attr['max_bandwidth_burst_rate'], 2000) finally: sai_thrift_set_scheduler_group_attribute( self.client, self.schgroup, scheduler_profile_id=0) sai_thrift_remove_scheduler(self.client, sched) @group("draft") class SchedulerPortAttachTest(SaiHelper): ''' Verify possibilities of attaching scheduler with different params set to a port ''' def runTest(self): self.schedulerMaxBwidthRatePortAttachTest() self.schedulerMaxBwidthBurstRatePortAttachTest() def schedulerMaxBwidthRatePortAttachTest(self): ''' Verify creation of scheduler with max bandwidth rate set and attaching it to a scheduler group ''' print("\nschedulerMaxBwidthRatePortAttachTest()") try: sched = sai_thrift_create_scheduler( self.client, meter_type=SAI_METER_TYPE_PACKETS, max_bandwidth_rate=1000, scheduling_type=SAI_SCHEDULING_TYPE_STRICT) self.assertNotEqual(sched, 0) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, meter_type=True, max_bandwidth_rate=True, scheduling_type=True) self.assertEqual(sched_attr['meter_type'], SAI_METER_TYPE_PACKETS) self.assertEqual(sched_attr['max_bandwidth_rate'], 1000) self.assertEqual(sched_attr['scheduling_type'], SAI_SCHEDULING_TYPE_STRICT) status = sai_thrift_set_port_attribute( self.client, self.port1, qos_scheduler_profile_id=sched) self.assertEqual(status, SAI_STATUS_SUCCESS) port_attr = sai_thrift_get_port_attribute( self.client, self.port1, qos_scheduler_profile_id=True) self.assertEqual(port_attr['qos_scheduler_profile_id'], sched) finally: sai_thrift_set_port_attribute( self.client, self.port1, qos_scheduler_profile_id=0) sai_thrift_remove_scheduler(self.client, sched) def schedulerMaxBwidthBurstRatePortAttachTest(self): ''' Verify creation of scheduler with max bandwidth burst rate set and attaching it to a scheduler group ''' print("\nschedulerMaxBwidthBurstRatePortAttachTest()") try: sched = sai_thrift_create_scheduler( self.client, meter_type=SAI_METER_TYPE_PACKETS, max_bandwidth_burst_rate=1000, scheduling_type=SAI_SCHEDULING_TYPE_STRICT) self.assertNotEqual(sched, 0) sched_attr = sai_thrift_get_scheduler_attribute( self.client, sched, meter_type=True, max_bandwidth_burst_rate=True, scheduling_type=True) self.assertEqual(sched_attr['meter_type'], SAI_METER_TYPE_PACKETS) self.assertEqual(sched_attr['max_bandwidth_burst_rate'], 1000) self.assertEqual(sched_attr['scheduling_type'], SAI_SCHEDULING_TYPE_STRICT) status = sai_thrift_set_port_attribute( self.client, self.port1, qos_scheduler_profile_id=sched) self.assertEqual(status, SAI_STATUS_SUCCESS) port_attr = sai_thrift_get_port_attribute( self.client, self.port1, qos_scheduler_profile_id=True) self.assertEqual(port_attr['qos_scheduler_profile_id'], sched) finally: sai_thrift_set_port_attribute( self.client, self.port1, qos_scheduler_profile_id=0) sai_thrift_remove_scheduler(self.client, sched)