public void TestBrowser() { #if __ANDROID__ if (global::Android.OS.Build.VERSION.SdkInt < global::Android.OS.BuildVersionCodes.JellyBean) { Assert.Inconclusive("PeerToPeer requires API level 16, but found {0}", global::Android.OS.Build.VERSION.Sdk); } #endif Log.Domains.All.Level = Log.LogLevel.None; Log.Domains.Discovery.Level = Log.LogLevel.Debug; //Use a short timeout to speed up the test since it is performed locally //Android will get stuck in DNSProcessResult which hangs indefinitely if //no results are found (Which will happen if registration is aborted between //the resolve reply and query record steps) ServiceParams.Timeout = TimeSpan.FromSeconds(3); var mre1 = new ManualResetEventSlim(); var mre2 = new ManualResetEventSlim(); CouchbaseLiteServiceBrowser browser = new CouchbaseLiteServiceBrowser(new ServiceBrowser()); browser.ServiceResolved += (sender, e) => { Log.To.Discovery.I(TAG, "Discovered service: {0}", e.Service.Name); if (e.Service.Name == TAG) { mre1.Set(); } }; browser.ServiceRemoved += (o, args) => { Log.To.Discovery.I(TAG, "Service destroyed: {0}", args.Service.Name); if (args.Service.Name == TAG) { mre2.Set(); } }; browser.Start(); CouchbaseLiteServiceBroadcaster broadcaster = new CouchbaseLiteServiceBroadcaster(new RegisterService(), 59840); broadcaster.Name = TAG; broadcaster.Start(); Assert.IsTrue(mre1.Wait(TimeSpan.FromSeconds(10))); //FIXME.JHB: Why does Linux hate this part sporadically? broadcaster.Dispose(); var success = mre2.Wait(TimeSpan.FromSeconds(10)); browser.Dispose(); Assert.IsTrue(success); mre1.Dispose(); mre2.Dispose(); }
public void TestBrowser() { var mre = new ManualResetEventSlim(); CouchbaseLiteServiceBrowser browser = new CouchbaseLiteServiceBrowser(null); browser.ServiceResolved += (sender, e) => { Log.D(TAG, "Discovered service: {0}", e.Service.Name); mre.Set(); }; browser.Start(); CouchbaseLiteServiceBroadcaster broadcaster = new CouchbaseLiteServiceBroadcaster(null, 59840); broadcaster.Name = "Foo"; broadcaster.Start(); Assert.IsTrue(mre.Wait(TimeSpan.FromSeconds(10))); }
public void TestBrowser() { #if __ANDROID__ if (global::Android.OS.Build.VERSION.SdkInt < global::Android.OS.BuildVersionCodes.JellyBean) { Assert.Inconclusive("PeerToPeer requires API level 16, but found {0}", global::Android.OS.Build.VERSION.Sdk); } #endif var mre = new ManualResetEventSlim(); CouchbaseLiteServiceBrowser browser = new CouchbaseLiteServiceBrowser(null); browser.ServiceResolved += (sender, e) => { Log.D(TAG, "Discovered service: {0}", e.Service.Name); mre.Set(); }; browser.Start(); CouchbaseLiteServiceBroadcaster broadcaster = new CouchbaseLiteServiceBroadcaster(null, 59840); broadcaster.Name = "Foo"; broadcaster.Start(); Assert.IsTrue(mre.Wait(TimeSpan.FromSeconds(10))); }