[AWARE] Add multi-NDI tests which switch roles

Duplicate the multi-NDI tests with a configuration which switches
the roles of the Iniatiator and Responder. I.e. NDPs are created
from both directions.

Bug: 69053210
Test: integration tests pass
Change-Id: Id4d2e63f883136660de376eacc122c194d41d15a
diff --git a/acts/tests/google/wifi/aware/functional/DataPathTest.py b/acts/tests/google/wifi/aware/functional/DataPathTest.py
index 2a78bc1..66ec715 100644
--- a/acts/tests/google/wifi/aware/functional/DataPathTest.py
+++ b/acts/tests/google/wifi/aware/functional/DataPathTest.py
@@ -1169,7 +1169,7 @@
 
   ########################################################################
 
-  def run_multiple_ndi(self, sec_configs):
+  def run_multiple_ndi(self, sec_configs, flip_init_resp=False):
     """Validate that the device can create and use multiple NDIs.
 
     The security configuration can be:
@@ -1179,6 +1179,9 @@
 
     Args:
       sec_configs: list of security configurations
+      flip_init_resp: if True the roles of Initiator and Responder are flipped
+                      between the 2 devices, otherwise same devices are always
+                      configured in the same role.
     """
     dut1 = self.android_devices[0]
     dut2 = self.android_devices[1]
@@ -1202,22 +1205,42 @@
     dut2_aware_ifs = []
     dut1_aware_ifs = []
 
+    dut2_type = aconsts.DATA_PATH_RESPONDER
+    dut1_type = aconsts.DATA_PATH_INITIATOR
+    dut2_is_responder = True
     for sec in sec_configs:
-      # DUT2: request network
-      dut2_req_key = autils.request_network(dut2,
-                                            autils.get_network_specifier(
-                                                dut2, id2,
-                                                aconsts.DATA_PATH_RESPONDER,
-                                                mac1, sec))
-      dut2_req_keys.append(dut2_req_key)
+      if dut2_is_responder:
+        # DUT2 (Responder): request network
+        dut2_req_key = autils.request_network(dut2,
+                                              autils.get_network_specifier(
+                                                  dut2, id2,
+                                                  dut2_type,
+                                                  mac1, sec))
+        dut2_req_keys.append(dut2_req_key)
 
-      # DUT1: request network
-      dut1_req_key = autils.request_network(dut1,
-                                            autils.get_network_specifier(
-                                                dut1, id1,
-                                                aconsts.DATA_PATH_INITIATOR,
-                                                mac2, sec))
-      dut1_req_keys.append(dut1_req_key)
+        # DUT1 (Initiator): request network
+        dut1_req_key = autils.request_network(dut1,
+                                              autils.get_network_specifier(
+                                                  dut1, id1,
+                                                  dut1_type,
+                                                  mac2, sec))
+        dut1_req_keys.append(dut1_req_key)
+      else:
+        # DUT1 (Responder): request network
+        dut1_req_key = autils.request_network(dut1,
+                                              autils.get_network_specifier(
+                                                  dut1, id1,
+                                                  dut1_type,
+                                                  mac2, sec))
+        dut1_req_keys.append(dut1_req_key)
+
+        # DUT2 (Initiator): request network
+        dut2_req_key = autils.request_network(dut2,
+                                              autils.get_network_specifier(
+                                                  dut2, id2,
+                                                  dut2_type,
+                                                  mac1, sec))
+        dut2_req_keys.append(dut2_req_key)
 
       # Wait for network
       dut1_net_event = autils.wait_for_event_with_keys(
@@ -1236,6 +1259,15 @@
       dut1_aware_ifs.append(
           dut1_net_event["data"][cconsts.NETWORK_CB_KEY_INTERFACE_NAME])
 
+      if flip_init_resp:
+        if dut2_is_responder:
+          dut2_type = aconsts.DATA_PATH_INITIATOR
+          dut1_type = aconsts.DATA_PATH_RESPONDER
+        else:
+          dut2_type = aconsts.DATA_PATH_RESPONDER
+          dut1_type = aconsts.DATA_PATH_INITIATOR
+        dut2_is_responder = not dut2_is_responder
+
     # check that we are using 2 NDIs
     dut1_aware_ifs = list(set(dut1_aware_ifs))
     dut2_aware_ifs = list(set(dut2_aware_ifs))
@@ -1302,3 +1334,49 @@
     configuration (using different PMKS). The result should use two different
     NDIs"""
     self.run_multiple_ndi([self.PMK, self.PMK2])
+
+  def test_multiple_ndi_open_passphrase_flip(self):
+    """Verify that can between 2 DUTs can create 2 NDPs with different security
+    configuration (one open, one using passphrase). The result should use two
+    different NDIs.
+
+    Flip Initiator and Responder roles.
+    """
+    self.run_multiple_ndi([None, self.PASSPHRASE], flip_init_resp=True)
+
+  def test_multiple_ndi_open_pmk_flip(self):
+    """Verify that can between 2 DUTs can create 2 NDPs with different security
+    configuration (one open, one using pmk). The result should use two
+    different NDIs
+
+    Flip Initiator and Responder roles.
+    """
+    self.run_multiple_ndi([None, self.PMK], flip_init_resp=True)
+
+  def test_multiple_ndi_passphrase_pmk_flip(self):
+    """Verify that can between 2 DUTs can create 2 NDPs with different security
+    configuration (one using passphrase, one using pmk). The result should use
+    two different NDIs
+
+    Flip Initiator and Responder roles.
+    """
+    self.run_multiple_ndi([self.PASSPHRASE, self.PMK], flip_init_resp=True)
+
+  def test_multiple_ndi_passphrases_flip(self):
+    """Verify that can between 2 DUTs can create 2 NDPs with different security
+    configuration (using different passphrases). The result should use two
+    different NDIs
+
+    Flip Initiator and Responder roles.
+    """
+    self.run_multiple_ndi([self.PASSPHRASE, self.PASSPHRASE2],
+                          flip_init_resp=True)
+
+  def test_multiple_ndi_pmks_flip(self):
+    """Verify that can between 2 DUTs can create 2 NDPs with different security
+    configuration (using different PMKS). The result should use two different
+    NDIs
+
+    Flip Initiator and Responder roles.
+    """
+    self.run_multiple_ndi([self.PMK, self.PMK2], flip_init_resp=True)