@@ -27,6 +27,8 @@ import (
2727 . "github.com/bytedance/mockey"
2828 . "github.com/smartystreets/goconvey/convey"
2929
30+ "github.com/kubewharf/katalyst-core/pkg/agent/qrm-plugins/cpu/dynamicpolicy/irqtuner/config"
31+ "github.com/kubewharf/katalyst-core/pkg/metrics"
3032 "github.com/kubewharf/katalyst-core/pkg/util/machine"
3133)
3234
@@ -109,6 +111,56 @@ func Test_clearNicXPS(t *testing.T) {
109111 })
110112}
111113
114+ func Test_tuneNicsXPS (t * testing.T ) {
115+ t .Parallel ()
116+ PatchConvey ("Test_tuneNicsXPS" , t , func () {
117+ ic := & IrqTuningController {
118+ conf : & config.IrqTuningConfig {
119+ DisableXPS : true ,
120+ },
121+ Nics : []* NicIrqTuningManager {
122+ {
123+ NicInfo : & NicInfo {
124+ NicBasicInfo : & machine.NicBasicInfo {
125+ InterfaceInfo : machine.InterfaceInfo {
126+ Name : "eth0" ,
127+ },
128+ Irq2Queue : map [int ]int {
129+ 100 : 0 ,
130+ },
131+ Queue2Irq : map [int ]int {
132+ 0 : 100 ,
133+ },
134+ QueueNum : 1 ,
135+ },
136+ Irq2Core : map [int ]int64 {
137+ 100 : 2 ,
138+ },
139+ SocketIrqCores : map [int ][]int64 {
140+ 0 : {2 },
141+ },
142+ },
143+ },
144+ },
145+ }
146+
147+ PatchConvey ("Scenario 1: clear NIC XPS successfully" , func () {
148+ Mock ((* IrqTuningController ).clearNicXPS ).Return (nil ).Build ()
149+
150+ ic .tuneNicsXPS ()
151+ })
152+
153+ PatchConvey ("Scenario 2: clear NIC XPS failed" , func () {
154+ expectedErr := errors .New ("failed to clearNicXPS" )
155+ Mock ((* IrqTuningController ).clearNicXPS ).Return (expectedErr ).Build ()
156+ Mock ((* IrqTuningController ).emitErrMetric ).To (func (reason string , level int64 , tags ... metrics.MetricTag ) {
157+ }).Build ()
158+
159+ ic .tuneNicsXPS ()
160+ })
161+ })
162+ }
163+
112164func Test_clearRPSForNic (t * testing.T ) {
113165 t .Parallel ()
114166 PatchConvey ("Test_clearRPSForNic" , t , func () {
0 commit comments