Exemple #1
0
        private void ExecuteInternal()
        {
            try
            {
                WiFiDirectTestLogger.Log("Beginning Discover/Connect scenario");

                // Do all discovers
                foreach (var discoveryParams in discoveryConnectParameters.DiscoveryParameters)
                {
                    var discoveryScenario = new ServicesDiscoveryScenario(seekerTestController, advertiserTestController, discoveryParams);
                    ServicesDiscoveryScenarioResult discoveryResult = discoveryScenario.Execute();
                    discoveryResults.Add(discoveryResult);

                    if (!discoveryResult.ScenarioSucceeded)
                    {
                        throw new Exception("Discovery failed!");
                    }
                }

                // BUG: [TH2] Fix race on back-to-back discoveries
                Task.Delay(500).Wait();

                // Do all connects
                foreach (var connectPreParams in discoveryConnectParameters.ConnectParameters)
                {
                    // Need to translate indices to handles
                    if (connectPreParams.DiscoveryResultIndex > discoveryResults.Count ||
                        connectPreParams.DiscoveryResultIndex < 0 ||
                        connectPreParams.DiscoveredHandleIndex > discoveryResults[connectPreParams.DiscoveryResultIndex].DiscoveryHandles.Count ||
                        connectPreParams.DiscoveredHandleIndex < 0)
                    {
                        throw new Exception("Bad connect parameters! Index out of range for discovered device");
                    }
                    WFDSvcWrapperHandle discoveredDevice = discoveryResults[connectPreParams.DiscoveryResultIndex].DiscoveryHandles[connectPreParams.DiscoveredHandleIndex];

                    // Now run scenario

                    ServicesConnectParameters connectParams = new ServicesConnectParameters(
                        discoveredDevice,
                        connectPreParams.AdvertiserHandle,
                        connectPreParams.Options
                        );

                    var connectScenario = new ServicesConnectScenario(seekerTestController, advertiserTestController, connectParams);
                    ServicesConnectScenarioResult connectResult = connectScenario.Execute();
                    connectResults.Add(connectResult);

                    if (!connectResult.ScenarioSucceeded)
                    {
                        throw new Exception("Connect failed!");
                    }
                }

                succeeded = true;
            }
            catch (Exception e)
            {
                WiFiDirectTestLogger.Error("Caught exception while executing service discover/connect scenario: {0}", e);
            }
        }
        public async Task <AsyncHandleResult> ConnectAsync(
            DiscoveredService discovered
            )
        {
            WFDSvcWrapperHandle sessionHandle = null;
            Exception           error         = null;
            bool success = false;

            try
            {
                ThrowIfDisposed();

                WiFiDirectTestLogger.Log("ConnectAsync... (Discovery={0})", discovered.Handle);

                sessionHandle = await discovered.ConnectAsync();

                ServiceSession session = GetSession(sessionHandle);

                if (session.Session.Status != WiFiDirectServiceSessionStatus.Open)
                {
                    throw new Exception("Session did not start successfully");
                }

                success = true;
            }
            catch (Exception ex)
            {
                WiFiDirectTestLogger.Log("Exception in ConnectAsync (this may be expected)");
                error = ex;
            }

            return(new AsyncHandleResult(sessionHandle, success, error));
        }
Exemple #3
0
        public void PrefixServiceNameMatchExactAndPrefix()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Publish 2 services on remote with same prefix
                string prefix         = remoteWFDController.GenerateUniqueServiceName();
                var    publishParams1 = new ServicesPublishParameters(
                    prefix + ".foo",
                    prefixList: new List <String> {
                    prefix
                }
                    );
                WFDSvcWrapperHandle advertiser1 = ExecutePublishScenario(publishParams1);
                var publishParams2 = new ServicesPublishParameters(
                    prefix
                    );
                WFDSvcWrapperHandle advertiser2 = ExecutePublishScenario(publishParams2);

                // Discover both services using common prefix
                var discoveryParams1 = new ServicesDiscoveryParameters(
                    prefix + "*",
                    advertisersToMatch: new List <WFDSvcWrapperHandle> {
                    advertiser1, advertiser2
                },
                    expectedMatchCount: 2,
                    type: ServicesDiscoveryType.Watcher
                    );
                ExecuteDiscoveryScenario(discoveryParams1);
            }
        }
        public async Task <AsyncHandleResult> AddDatagramSocketAsync(
            ServiceSession session,
            UInt16 port
            )
        {
            WFDSvcWrapperHandle socketHandle = null;
            Exception           error        = null;
            bool success = false;

            try
            {
                ThrowIfDisposed();

                WiFiDirectTestLogger.Log(
                    "AddDatagramSocketAsync... (port={0}) (Session={1})",
                    port.ToString(),
                    session.Handle
                    );

                SocketWrapper socket = await session.AddDatagramSocketListenerAsync(port);

                socketHandle = socket.Handle;

                success = true;
            }
            catch (Exception ex)
            {
                WiFiDirectTestLogger.Log("Exception in AddDatagramSocketAsync (this may be expected)");
                error = ex;
            }

            return(new AsyncHandleResult(socketHandle, success, error));
        }
Exemple #5
0
 public ServicesUnpublishParameters(
     WFDSvcWrapperHandle advertiserHandle,
     bool remove = true
     )
 {
     AdvertiserHandle = advertiserHandle;
     Remove           = remove;
 }
 public ServicesDisconnectParameters(
     WFDSvcWrapperHandle sessionHandle,
     WFDSvcWrapperHandle otherSessionHandle
     )
 {
     SessionHandle      = sessionHandle;
     OtherSessionHandle = otherSessionHandle;
 }
 public ServicesPublishScenarioResult(
     bool scenarioSucceeded,
     WFDSvcWrapperHandle advertiserHandle
     )
 {
     ScenarioSucceeded = scenarioSucceeded;
     AdvertiserHandle  = advertiserHandle;
 }
        private void ExecuteInternal()
        {
            try
            {
                WiFiDirectTestLogger.Log(
                    "Starting Publish for service \"{0}\" on device {1} ({2})",
                    publishParameters.ServiceName,
                    advertisingWFDController.DeviceAddress,
                    advertisingWFDController.MachineName
                    );

                List <WiFiDirectServiceConfigurationMethod> configMethods = null;

                if (publishParameters.ConfigMethods != ServicePublishConfigMethods.NotSet)
                {
                    configMethods = new List <WiFiDirectServiceConfigurationMethod>();

                    if (publishParameters.ConfigMethods == ServicePublishConfigMethods.PinOnlyDisplay ||
                        publishParameters.ConfigMethods == ServicePublishConfigMethods.PinOnlyDisplayKeypad ||
                        publishParameters.ConfigMethods == ServicePublishConfigMethods.PinOrDefaultDisplay ||
                        publishParameters.ConfigMethods == ServicePublishConfigMethods.Any)
                    {
                        configMethods.Add(WiFiDirectServiceConfigurationMethod.PinDisplay);
                    }
                    if (publishParameters.ConfigMethods == ServicePublishConfigMethods.PinOnlyKeypad ||
                        publishParameters.ConfigMethods == ServicePublishConfigMethods.PinOnlyDisplayKeypad ||
                        publishParameters.ConfigMethods == ServicePublishConfigMethods.PinOrDefaultKeypad ||
                        publishParameters.ConfigMethods == ServicePublishConfigMethods.Any)
                    {
                        configMethods.Add(WiFiDirectServiceConfigurationMethod.PinEntry);
                    }
                    if (publishParameters.ConfigMethods == ServicePublishConfigMethods.PinOrDefaultDisplay ||
                        publishParameters.ConfigMethods == ServicePublishConfigMethods.PinOrDefaultKeypad ||
                        publishParameters.ConfigMethods == ServicePublishConfigMethods.Any)
                    {
                        configMethods.Add(WiFiDirectServiceConfigurationMethod.Default);
                    }
                }

                handle = advertisingWFDController.PublishService(
                    publishParameters.ServiceName,
                    publishParameters.AutoAccept,
                    publishParameters.PreferGO,
                    configMethods,
                    WiFiDirectServiceStatus.Available, // TODO status
                    0,                                 // TODO custom status
                    publishParameters.ServiceInfo,
                    publishParameters.SessionInfo,
                    publishParameters.PrefixList
                    );

                succeeded = true;
            }
            catch (Exception e)
            {
                WiFiDirectTestLogger.Error("Caught exception while executing service publish scenario: {0}", e);
            }
        }
Exemple #9
0
        public void PublishServicesLongName()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Publish multiple services with long names and prefixes
                string prefix1        = remoteWFDController.GenerateUniqueServiceName("com.microsoft.longnameservice.1.2.3.4.5.6.7.8.9.0.");
                var    publishParams1 = new ServicesPublishParameters(
                    prefix1 + ".foo"
                    );
                WFDSvcWrapperHandle advertiser1 = ExecutePublishScenario(publishParams1);
                var publishParams2 = new ServicesPublishParameters(
                    prefix1 + ".bar"
                    );
                WFDSvcWrapperHandle advertiser2 = ExecutePublishScenario(publishParams2);
                var publishParams3 = new ServicesPublishParameters(
                    prefix1 + ".baz"
                    );
                WFDSvcWrapperHandle advertiser3 = ExecutePublishScenario(publishParams3);
                var publishParams4 = new ServicesPublishParameters(
                    prefix1 + ".bat"
                    );
                WFDSvcWrapperHandle advertiser4 = ExecutePublishScenario(publishParams4);

                // Discover all services, NOT USING PREFIX
                var discoveryParams1 = new ServicesDiscoveryParameters(
                    prefix1 + ".foo",
                    advertisersToMatch: new List <WFDSvcWrapperHandle> {
                    advertiser1
                },
                    type: ServicesDiscoveryType.Watcher
                    );
                ExecuteDiscoveryScenario(discoveryParams1);
                var discoveryParams2 = new ServicesDiscoveryParameters(
                    prefix1 + ".bar",
                    advertisersToMatch: new List <WFDSvcWrapperHandle> {
                    advertiser2
                },
                    type: ServicesDiscoveryType.Watcher
                    );
                ExecuteDiscoveryScenario(discoveryParams2);
                var discoveryParams3 = new ServicesDiscoveryParameters(
                    prefix1 + ".baz",
                    advertisersToMatch: new List <WFDSvcWrapperHandle> {
                    advertiser3
                },
                    type: ServicesDiscoveryType.Watcher
                    );
                ExecuteDiscoveryScenario(discoveryParams3);
                var discoveryParams4 = new ServicesDiscoveryParameters(
                    prefix1 + ".bat",
                    advertisersToMatch: new List <WFDSvcWrapperHandle> {
                    advertiser4
                },
                    type: ServicesDiscoveryType.Watcher
                    );
                ExecuteDiscoveryScenario(discoveryParams4);
            }
        }
 public ServicesConnectParameters(
     WFDSvcWrapperHandle discoveryHandle,
     WFDSvcWrapperHandle advertiserHandle,
     ServicesConnectOptions options
     )
 {
     DiscoveryHandle  = discoveryHandle;
     AdvertiserHandle = advertiserHandle;
     Options          = options;
 }
Exemple #11
0
 public ServicesOpenSocketScenarioResult(
     bool scenarioSucceeded,
     WFDSvcWrapperHandle senderSocketHandle,
     WFDSvcWrapperHandle receiverSocketHandle
     )
 {
     ScenarioSucceeded    = scenarioSucceeded;
     SenderSocketHandle   = senderSocketHandle;
     ReceiverSocketHandle = receiverSocketHandle;
 }
        public void RemoveSession(WFDSvcWrapperHandle handle)
        {
            bool fRemoved = sessionCollection.Remove(handle);

            if (!fRemoved)
            {
                WiFiDirectTestLogger.Error("Remove session failed to find session in list! (Session={0})", handle);
                throw new Exception("Failed to remove session");
            }
        }
        public void RemoveDiscovery(WFDSvcWrapperHandle handle)
        {
            bool fRemoved = discoveryCollection.Remove(handle);

            if (!fRemoved)
            {
                WiFiDirectTestLogger.Error("Remove discovery failed to find discovery in list! (Session={0})", handle);
                throw new Exception("Failed to remove discovery");
            }
        }
        public WFDSvcWrapperHandle GetLastRemoteSocketAdded(
            ServiceSession session
            )
        {
            WiFiDirectTestLogger.Log("Waiting for session to get RemotePortAdded event and setup socket (Session={0})", session.Handle);
            session.WaitForRemotePortAdded();

            WFDSvcWrapperHandle socketHandle = session.LastRemoteSocketAdded;

            return(socketHandle);
        }
Exemple #15
0
 public ServicesOpenSocketParameters(
     WFDSvcWrapperHandle senderSessionHandle,
     WFDSvcWrapperHandle receiverSessionHandle,
     WiFiDirectServiceIPProtocol protocol,
     UInt16 port
     )
 {
     SenderSessionHandle   = senderSessionHandle;
     ReceiverSessionHandle = receiverSessionHandle;
     Protocol = protocol;
     Port     = port;
 }
Exemple #16
0
 public ServicesReconnectPreDiscoveryParameters(
     int discoveryResultIndex,
     int discoveredHandleIndex,
     WFDSvcWrapperHandle advertiserHandle,
     ServicesConnectOptions options
     )
 {
     Options = options;
     DiscoveryResultIndex  = discoveryResultIndex;
     DiscoveredHandleIndex = discoveredHandleIndex;
     AdvertiserHandle      = advertiserHandle;
 }
        public ServiceSession GetSession(WFDSvcWrapperHandle handle)
        {
            ThrowIfDisposed();
            ServiceSession session = sessionCollection[handle];

            if (session == null)
            {
                throw new Exception(String.Format(CultureInfo.InvariantCulture, "Session not found for handle={0}", handle));
            }

            return(session);
        }
        public DiscoveredService GetDiscoveredService(WFDSvcWrapperHandle handle)
        {
            ThrowIfDisposed();
            DiscoveredService service = discoveryCollection[handle];

            if (service == null)
            {
                throw new Exception(String.Format(CultureInfo.InvariantCulture, "Discovered service not found for handle={0}", handle));
            }

            return(service);
        }
        public ServiceAdvertiser GetAdvertiser(WFDSvcWrapperHandle handle)
        {
            ThrowIfDisposed();
            ServiceAdvertiser advertiser = advertiserCollection[handle];

            if (advertiser == null)
            {
                throw new Exception(String.Format(CultureInfo.InvariantCulture, "Advertiser not found for handle={0}", handle));
            }

            return(advertiser);
        }
Exemple #20
0
        public void MultipleDiscoveries()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Publish 2 services on remote
                var publishParams1 = new ServicesPublishParameters(
                    remoteWFDController.GenerateUniqueServiceName()
                    );
                WFDSvcWrapperHandle advertiser1 = ExecutePublishScenario(publishParams1);
                var publishParams2 = new ServicesPublishParameters(
                    remoteWFDController.GenerateUniqueServiceName()
                    );
                WFDSvcWrapperHandle advertiser2 = ExecutePublishScenario(publishParams2);

                // Quick sanity check that the service names are different
                Verify.AreNotEqual(publishParams1.ServiceName, publishParams2.ServiceName);

                // Discover same services from local
                var discoveryParams1 = new ServicesDiscoveryParameters(
                    publishParams1.ServiceName,
                    advertisersToMatch: new List <WFDSvcWrapperHandle> {
                    advertiser1
                }
                    );
                ExecuteDiscoveryScenario(discoveryParams1);

                var discoveryParams2 = new ServicesDiscoveryParameters(
                    publishParams2.ServiceName,
                    advertisersToMatch: new List <WFDSvcWrapperHandle> {
                    advertiser2
                }
                    );
                ExecuteDiscoveryScenario(discoveryParams2);

                // Publish 3rd service on remote
                var publishParams3 = new ServicesPublishParameters(
                    remoteWFDController.GenerateUniqueServiceName()
                    );
                WFDSvcWrapperHandle advertiser3 = ExecutePublishScenario(publishParams3);

                Verify.AreNotEqual(publishParams3.ServiceName, publishParams1.ServiceName);
                Verify.AreNotEqual(publishParams3.ServiceName, publishParams2.ServiceName);

                // Discover 3rd service from local
                var discoveryParams3 = new ServicesDiscoveryParameters(
                    publishParams3.ServiceName,
                    advertisersToMatch: new List <WFDSvcWrapperHandle> {
                    advertiser3
                }
                    );
                ExecuteDiscoveryScenario(discoveryParams3);
            }
        }
Exemple #21
0
 public ServicesSendDataParameters(
     WFDSvcWrapperHandle senderSessionHandle,
     WFDSvcWrapperHandle senderSocketHandle,
     WFDSvcWrapperHandle receiverSessionHandle,
     WFDSvcWrapperHandle receiverSocketHandle,
     UInt32 dataSize
     )
 {
     SenderSessionHandle   = senderSessionHandle;
     SenderSocketHandle    = senderSocketHandle;
     ReceiverSessionHandle = receiverSessionHandle;
     ReceiverSocketHandle  = receiverSocketHandle;
     DataSize = dataSize;
 }
 public ServicesConnectScenarioResult(
     bool scenarioSucceeded,
     WFDSvcWrapperHandle seekerSessionHandle,
     WFDSvcWrapperHandle advertiserSessionHandle,
     WFDSvcWrapperHandle seekerSocketHandle,
     WFDSvcWrapperHandle advertiserSocketHandle
     )
 {
     ScenarioSucceeded       = scenarioSucceeded;
     SeekerSessionHandle     = seekerSessionHandle;
     AdvertiserSessionHandle = advertiserSessionHandle;
     SeekerSocketHandle      = seekerSocketHandle;
     AdvertiserSocketHandle  = advertiserSocketHandle;
 }
Exemple #23
0
        private void ExecuteInternal()
        {
            try
            {
                WiFiDirectTestLogger.Log(
                    "Starting open socket ({6} {7}) from session with handle {0} on device {1} ({2}), expect socket added on session with handle {3} on device {4} ({5})",
                    socketParameters.SenderSessionHandle,
                    senderWFDController.DeviceAddress,
                    senderWFDController.MachineName,
                    socketParameters.ReceiverSessionHandle,
                    receiverWFDController.DeviceAddress,
                    receiverWFDController.MachineName,
                    socketParameters.Protocol.ToString(),
                    socketParameters.Port
                    );

                if (socketParameters.Protocol == WiFiDirectServiceIPProtocol.Tcp)
                {
                    senderSocketHandle = senderWFDController.AddServiceStreamSocket(
                        socketParameters.SenderSessionHandle,
                        socketParameters.Port
                        );

                    receiverSocketHandle = receiverWFDController.GetServiceRemoteSocketAdded(
                        socketParameters.ReceiverSessionHandle
                        );
                }
                else if (socketParameters.Protocol == WiFiDirectServiceIPProtocol.Udp)
                {
                    senderSocketHandle = senderWFDController.AddServiceDatagramSocket(
                        socketParameters.SenderSessionHandle,
                        socketParameters.Port
                        );

                    receiverSocketHandle = receiverWFDController.GetServiceRemoteSocketAdded(
                        socketParameters.ReceiverSessionHandle
                        );
                }
                else
                {
                    throw new Exception("Unsupported Protocol!");
                }

                succeeded = true;
            }
            catch (Exception e)
            {
                WiFiDirectTestLogger.Error("Caught exception while executing service open socket scenario: {0}", e);
            }
        }
Exemple #24
0
        // TODO add general constructor that just takes the 2 lists if needed

        /// <summary>
        /// Simple version for a single discovery/connect of same service
        /// </summary>
        public ServicesDiscoverConnectParameters(
            WFDSvcWrapperHandle advertiserHandle,
            string query,
            ServicesDiscoveryType discoveryType,
            ServicesConnectOptions connectOptions
            )
        {
            DiscoveryParameters = new List <ServicesDiscoveryParameters> {
                new ServicesDiscoveryParameters(query, 1, new List <WFDSvcWrapperHandle> {
                    advertiserHandle
                }, discoveryType)
            };
            ConnectParameters = new List <ServicesReconnectPreDiscoveryParameters> {
                new ServicesReconnectPreDiscoveryParameters(0, 0, advertiserHandle, connectOptions)
            };
        }
Exemple #25
0
        public void ServiceInfoMaxSize()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                string       serviceInfo = "";
                Random       rng         = new Random();
                const string s_chars     = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890!@#$%^&*()_-+={}][|;:'<>,./?~` ";

                StringBuilder builder = new StringBuilder();
                // make a string of 65000 ASCII characters
                // First write 10000 random characters
                // Next write 7 characters to match
                // Then write 54993 random characters
                for (int i = 0; i < 10000; i++)
                {
                    builder.Append(s_chars[rng.Next(s_chars.Length)]);
                }
                builder.Append("foo_bar");
                for (int i = 0; i < 54993; i++)
                {
                    builder.Append(s_chars[rng.Next(s_chars.Length)]);
                }
                serviceInfo = builder.ToString();

                var publishParams1 = new ServicesPublishParameters(
                    remoteWFDController.GenerateUniqueServiceName(),
                    serviceInfo: serviceInfo
                    );
                WFDSvcWrapperHandle advertiser1 = ExecutePublishScenario(publishParams1);

                // Discover service with info
                var discoveryParams1 = new ServicesDiscoveryParameters(
                    publishParams1.ServiceName,
                    advertisersToMatch: new List <WFDSvcWrapperHandle> {
                    advertiser1
                },
                    type: ServicesDiscoveryType.Watcher,
                    serviceInfoRequest: "foo_bar",
                    advertiserServiceInfoMatch: new List <bool> {
                    true
                }
                    );
                ExecuteDiscoveryScenario(discoveryParams1);
            }
        }
Exemple #26
0
        public void ServiceInfoMultipleMatchSameServicePrefix()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                string prefix         = remoteWFDController.GenerateUniqueServiceName();
                var    publishParams1 = new ServicesPublishParameters(
                    prefix + ".foo",
                    prefixList: new List <String> {
                    prefix
                },
                    serviceInfo: "this is some example service info. It will match the requested info"
                    );
                WFDSvcWrapperHandle advertiser1 = ExecutePublishScenario(publishParams1);
                var publishParams2 = new ServicesPublishParameters(
                    prefix,
                    serviceInfo: "Here is another set of service info. It also has the word example"
                    );
                WFDSvcWrapperHandle advertiser2 = ExecutePublishScenario(publishParams2);
                var publishParams3 = new ServicesPublishParameters(
                    prefix + ".bar",
                    prefixList: new List <String> {
                    prefix
                },
                    serviceInfo: "This service will match without service info. Not expected to find this"
                    );
                WFDSvcWrapperHandle advertiser3 = ExecutePublishScenario(publishParams3);

                // Discover all services using same name
                var discoveryParams1 = new ServicesDiscoveryParameters(
                    prefix + "*",
                    advertisersToMatch: new List <WFDSvcWrapperHandle> {
                    advertiser1, advertiser2, advertiser3
                },
                    expectedMatchCount: 3,
                    type: ServicesDiscoveryType.Watcher,
                    serviceInfoRequest: "example",
                    advertiserServiceInfoMatch: new List <bool> {
                    true, true, false
                }
                    );
                ExecuteDiscoveryScenario(discoveryParams1);
            }
        }
        public WFDSvcWrapperHandle GetLastAdvertiserSession(
            ServiceAdvertiser advertiser,
            bool autoAccept
            )
        {
            WiFiDirectTestLogger.Log("Waiting for Advertiser to get session connection (Advertiser={0})", advertiser.Handle);
            if (autoAccept)
            {
                advertiser.WaitForAutoAcceptSessionConnected();
            }
            else
            {
                advertiser.WaitForSessionRequested();
            }

            WFDSvcWrapperHandle sessionHandle = advertiser.LastConnectedSession;

            return(sessionHandle);
        }
        public void UnPublishService(ServiceAdvertiser advertiser, bool fRemove = false)
        {
            ThrowIfDisposed();

            WFDSvcWrapperHandle handle = advertiser.Handle;

            WiFiDirectTestLogger.Log("Unpublishing advertiser (Advertiser={0} ServiceName={1})", handle, advertiser.Advertiser.ServiceName);

            advertiser.Advertiser.Stop();

            if (fRemove)
            {
                WiFiDirectTestLogger.Log("Removing advertiser (Advertiser={0} ServiceName={1})", handle, advertiser.Advertiser.ServiceName);
                advertiser.Dispose();

                advertiserCollection.Remove(handle);
            }

            WiFiDirectTestLogger.Log("Unpublish service done (Advertiser={0})", handle);
        }
Exemple #29
0
        public void PrefixServiceNameMatchingSpecific()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Publish 2 services on remote with same prefix, 3rd service with different prefix
                string prefix         = remoteWFDController.GenerateUniqueServiceName();
                var    publishParams1 = new ServicesPublishParameters(
                    prefix + ".1.foo",
                    prefixList: new List <String> {
                    prefix, prefix + ".1"
                }
                    );
                WFDSvcWrapperHandle advertiser1 = ExecutePublishScenario(publishParams1);
                var publishParams2 = new ServicesPublishParameters(
                    prefix + ".1.bar",
                    prefixList: new List <String> {
                    prefix, prefix + ".1", prefix + ".1."
                }
                    );
                WFDSvcWrapperHandle advertiser2 = ExecutePublishScenario(publishParams2);
                var publishParams3 = new ServicesPublishParameters(
                    prefix + ".2.foo",
                    prefixList: new List <String> {
                    prefix, prefix + ".2"
                }
                    );
                WFDSvcWrapperHandle advertiser3 = ExecutePublishScenario(publishParams3);

                // Discover first 2 services using common prefix
                var discoveryParams1 = new ServicesDiscoveryParameters(
                    prefix + ".1*",
                    advertisersToMatch: new List <WFDSvcWrapperHandle> {
                    advertiser1, advertiser2
                },
                    expectedMatchCount: 2
                    );
                ExecuteDiscoveryScenario(discoveryParams1);
            }
        }
Exemple #30
0
        public void UnPublishNoMatchDiscovery()
        {
            using (RemoteControllerLogGroup lg = new RemoteControllerLogGroup(remoteWFDController))
            {
                // Publish one service on remote
                var publishParams = new ServicesPublishParameters(
                    remoteWFDController.GenerateUniqueServiceName()
                    );
                WFDSvcWrapperHandle advertiser = ExecutePublishScenario(publishParams);

                // Unpublish service
                var unpublishParams = new ServicesUnpublishParameters(advertiser);
                ExecuteUnpublishScenario(unpublishParams);

                // Discover same service from local, should not be found
                var discoveryParams = new ServicesDiscoveryParameters(
                    publishParams.ServiceName,
                    0
                    );
                ExecuteDiscoveryScenario(discoveryParams);
            }
        }