@@ -24,15 +24,16 @@ import (
2424// StressCPU Uses the REST API to exec into the target container of the target pod
2525// The function will be constantly increasing the CPU utilisation until it reaches the maximum available or allowed number.
2626// Using the TOTAL_CHAOS_DURATION we will need to specify for how long this experiment will last
27- func StressCPU (containerName , podName , namespace , cpuHogCmd string , clients clients.ClientSets ) error {
27+ func StressCPU (experimentsDetails * experimentTypes. ExperimentDetails , podName string , clients clients.ClientSets ) error {
2828 // It will contains all the pod & container details required for exec command
2929 execCommandDetails := litmusexec.PodDetails {}
30- command := []string {"/bin/sh" , "-c" , cpuHogCmd }
31- litmusexec .SetExecCommandAttributes (& execCommandDetails , podName , containerName , namespace )
30+ command := []string {"/bin/sh" , "-c" , experimentsDetails . ChaosInjectCmd }
31+ litmusexec .SetExecCommandAttributes (& execCommandDetails , podName , experimentsDetails . TargetContainer , experimentsDetails . AppNS )
3232 _ , err := litmusexec .Exec (& execCommandDetails , clients , command )
3333 if err != nil {
3434 return errors .Errorf ("Unable to run stress command inside target container, err: %v" , err )
3535 }
36+
3637 return nil
3738}
3839
@@ -85,7 +86,9 @@ func InjectChaosInSerialMode(experimentsDetails *experimentTypes.ExperimentDetai
8586 "Pod" : pod .Name ,
8687 "CPU CORE" : experimentsDetails .CPUcores ,
8788 })
88- go StressCPU (experimentsDetails .TargetContainer , pod .Name , experimentsDetails .AppNS , experimentsDetails .ChaosInjectCmd , clients )
89+ for i := 0 ; i < experimentsDetails .CPUcores ; i ++ {
90+ go StressCPU (experimentsDetails , pod .Name , clients )
91+ }
8992
9093 log .Infof ("[Chaos]:Waiting for: %vs" , experimentsDetails .ChaosDuration )
9194
@@ -99,7 +102,7 @@ func InjectChaosInSerialMode(experimentsDetails *experimentTypes.ExperimentDetai
99102 select {
100103 case <- signChan :
101104 log .Info ("[Chaos]: Killing process started because of terminated signal received" )
102- err := KillStressCPUSerial (experimentsDetails . TargetContainer , pod .Name , experimentsDetails . AppNS , experimentsDetails . ChaosKillCmd , clients )
105+ err := KillStressCPUSerial (experimentsDetails , pod .Name , clients )
103106 if err != nil {
104107 klog .V (0 ).Infof ("Error in Kill stress after abortion" )
105108 return err
@@ -124,7 +127,7 @@ func InjectChaosInSerialMode(experimentsDetails *experimentTypes.ExperimentDetai
124127 break loop
125128 }
126129 }
127- if err := KillStressCPUSerial (experimentsDetails . TargetContainer , pod .Name , experimentsDetails . AppNS , experimentsDetails . ChaosKillCmd , clients ); err != nil {
130+ if err := KillStressCPUSerial (experimentsDetails , pod .Name , clients ); err != nil {
128131 return err
129132 }
130133 }
@@ -150,7 +153,9 @@ func InjectChaosInParallelMode(experimentsDetails *experimentTypes.ExperimentDet
150153 "CPU CORE" : experimentsDetails .CPUcores ,
151154 })
152155
153- go StressCPU (experimentsDetails .TargetContainer , pod .Name , experimentsDetails .AppNS , experimentsDetails .ChaosInjectCmd , clients )
156+ for i := 0 ; i < experimentsDetails .CPUcores ; i ++ {
157+ go StressCPU (experimentsDetails , pod .Name , clients )
158+ }
154159 }
155160
156161 log .Infof ("[Chaos]:Waiting for: %vs" , experimentsDetails .ChaosDuration )
@@ -165,7 +170,7 @@ loop:
165170 select {
166171 case <- signChan :
167172 log .Info ("[Chaos]: Killing process started because of terminated signal received" )
168- err := KillStressCPUParallel (experimentsDetails . TargetContainer , targetPodList , experimentsDetails . AppNS , experimentsDetails . ChaosKillCmd , clients )
173+ err := KillStressCPUParallel (experimentsDetails , targetPodList , clients )
169174 if err != nil {
170175 klog .V (0 ).Infof ("Error in Kill stress after abortion" )
171176 return err
@@ -190,7 +195,7 @@ loop:
190195 break loop
191196 }
192197 }
193- if err := KillStressCPUParallel (experimentsDetails . TargetContainer , targetPodList , experimentsDetails . AppNS , experimentsDetails . ChaosKillCmd , clients ); err != nil {
198+ if err := KillStressCPUParallel (experimentsDetails , targetPodList , clients ); err != nil {
194199 return err
195200 }
196201
@@ -231,13 +236,13 @@ func GetTargetContainer(experimentsDetails *experimentTypes.ExperimentDetails, a
231236
232237// KillStressCPUSerial function to kill a stress process running inside target container
233238// Triggered by either timeout of chaos duration or termination of the experiment
234- func KillStressCPUSerial (containerName , podName , namespace , cpuFreeCmd string , clients clients.ClientSets ) error {
239+ func KillStressCPUSerial (experimentsDetails * experimentTypes. ExperimentDetails , podName string , clients clients.ClientSets ) error {
235240 // It will contains all the pod & container details required for exec command
236241 execCommandDetails := litmusexec.PodDetails {}
237242
238- command := []string {"/bin/sh" , "-c" , cpuFreeCmd }
243+ command := []string {"/bin/sh" , "-c" , experimentsDetails . ChaosKillCmd }
239244
240- litmusexec .SetExecCommandAttributes (& execCommandDetails , podName , containerName , namespace )
245+ litmusexec .SetExecCommandAttributes (& execCommandDetails , podName , experimentsDetails . TargetContainer , experimentsDetails . AppNS )
241246 _ , err := litmusexec .Exec (& execCommandDetails , clients , command )
242247 if err != nil {
243248 return errors .Errorf ("Unable to kill the stress process in %v pod, err: %v" , podName , err )
@@ -248,11 +253,11 @@ func KillStressCPUSerial(containerName, podName, namespace, cpuFreeCmd string, c
248253
249254// KillStressCPUParallel function to kill all the stress process running inside target container
250255// Triggered by either timeout of chaos duration or termination of the experiment
251- func KillStressCPUParallel (containerName string , targetPodList corev1.PodList , namespace , cpuFreeCmd string , clients clients.ClientSets ) error {
256+ func KillStressCPUParallel (experimentsDetails * experimentTypes. ExperimentDetails , targetPodList corev1.PodList , clients clients.ClientSets ) error {
252257
253258 for _ , pod := range targetPodList .Items {
254259
255- if err := KillStressCPUSerial (containerName , pod .Name , namespace , cpuFreeCmd , clients ); err != nil {
260+ if err := KillStressCPUSerial (experimentsDetails , pod .Name , clients ); err != nil {
256261 return err
257262 }
258263 }
0 commit comments