@@ -60,7 +60,7 @@ func TestConnectivity(t *testing.T) {
6060 t .Run ("testOVSRestartSameNode" , func (t * testing.T ) {
6161 skipIfNotIPv4Cluster (t )
6262 skipIfHasWindowsNodes (t )
63- testOVSRestartSameNode (t , data , data .testNamespace )
63+ testOVSRestartSameNode (t , data , data .testNamespace , false )
6464 })
6565 t .Run ("testOVSFlowReplay" , func (t * testing.T ) {
6666 skipIfHasWindowsNodes (t )
@@ -425,7 +425,7 @@ func testPodConnectivityAfterAntreaRestart(t *testing.T, data *TestData, namespa
425425// testOVSRestartSameNode verifies that datapath flows are not removed when the Antrea Agent Pod is
426426// stopped gracefully (e.g. as part of a RollingUpdate). The test sends ARP requests every 1s and
427427// checks that there is no packet loss during the restart.
428- func testOVSRestartSameNode (t * testing.T , data * TestData , namespace string ) {
428+ func testOVSRestartSameNode (t * testing.T , data * TestData , namespace string , force bool ) {
429429 workerNode := workerNodeName (1 )
430430 t .Logf ("Creating two toolbox test Pods on '%s'" , workerNode )
431431 podNames , podIPs , cleanupFn := createTestToolboxPods (t , data , 2 , namespace , workerNode )
@@ -469,8 +469,24 @@ func testOVSRestartSameNode(t *testing.T, data *TestData, namespace string) {
469469 time .Sleep (3 * time .Second )
470470
471471 t .Logf ("Restarting antrea-agent on Node '%s'" , workerNode )
472- if _ , err := data .deleteAntreaAgentOnNode (workerNode , 30 /* grace period in seconds */ , defaultTimeout ); err != nil {
473- t .Fatalf ("Error when restarting antrea-agent on Node '%s': %v" , workerNode , err )
472+ if ! force {
473+ if _ , err := data .deleteAntreaAgentOnNode (workerNode , 30 /* grace period in seconds */ , defaultTimeout ); err != nil {
474+ t .Fatalf ("Error when restarting antrea-agent on Node '%s': %v" , workerNode , err )
475+ }
476+ } else {
477+ signalAgent := func (nodeName , signal string ) {
478+ cmd := fmt .Sprintf ("pkill -%s antrea-agent" , signal )
479+ if testOptions .providerName != "kind" {
480+ cmd = "sudo " + cmd
481+ }
482+ rc , stdout , stderr , err := data .RunCommandOnNode (nodeName , cmd )
483+ if rc != 0 || err != nil {
484+ t .Errorf ("Error when running command '%s' on Node '%s', rc: %d, stdout: %s, stderr: %s, error: %v" ,
485+ cmd , nodeName , rc , stdout , stderr , err )
486+ }
487+ }
488+ // Send "KILL" signal to antrea-agent.
489+ signalAgent (workerNode , "KILL" )
474490 }
475491
476492 if err := <- resCh ; err != nil {
0 commit comments