All right,

I looked into this further and I guess I found a better solution.
Basically the server needs to be setup once for all the [Test]
methods. [SetUp] SetUp() and [TearDown] TearDown() will "bracket" each
call to a [Test] method. So I dropped those altogether. Instead I have
these:

                [TestFixtureSetUp]
                public void FixtureSetup()
                {
                        if (!serverStarted)
                        {
                                Random rnd = new 
Random((int)(DateTime.Now.Ticks & 0x7fffffff));
                                port = rnd.Next(System.Net.IPEndPoint.MinPort,
System.Net.IPEndPoint.MaxPort);
                                Console.WriteLine("Port " + port);
                                httpChannel = new 
System.Runtime.Remoting.Channels.Http.HttpChannel(port);
                                StartServer();
                        }
                }

                [TestFixtureTearDown]
                public void FixtureTeardown()
                {
                        try
                        {
                                
System.Runtime.Remoting.Channels.ChannelServices.UnregisterChannel(httpChannel);
                        }
                        catch
                        {
                        }

                        httpChannel = null;
                }

[TestFixtureSetUp] and [TestFixtureTearDown] methods are called only
once and "bracket" the [TestFixutre] class. So the server gets setup,
then all the [Test] methods are run, and the we do
UnregisterChannel().

I ran the test a whole bunch of times without a single failure.

What do you say?
tjk :)

P.S. HttpChannel() does not automatically get an available port. :(

On Mon, Jan 12, 2009 at 4:36 PM, Digy <digyd...@gmail.com> wrote:
> Hi Ben,
> You are right, but it is still possible to choose a free port rather that a
> random port which may be in use.
>
> DIGY.
>
> -----Original Message-----
> From: Ben Martz [mailto:benma...@gmail.com]
> Sent: Monday, January 12, 2009 11:57 PM
> To: lucene-net-dev@incubator.apache.org
> Subject: Re: TestRemoteSearchable and random port
>
> Hi DIGY,
>
> That's what I thought at first as well until I realized that the SetUp
> method is explicitly choosing a random port number each time its called. If
> it wasn't for the random port numbering I would perhaps suggest an explicit
> call to UnregisterChannel.
>
> Cheers,
> Ben
>
> On Mon, Jan 12, 2009 at 1:51 PM, Digy <digyd...@gmail.com> wrote:
>
>> Hi TJ,
>>
>> You can open an issue on JIRA
>> (https://issues.apache.org/jira/browse/LUCENENET) and submit your patches.
>> But as far as I can see, your patch reduces the probability of a port
>> conflict but does not solve the real problem. I think, the real problem
>> lies
>> in some previously running test cases not closing the ports appropriately.
>>
>> DIGY
>>
>>
> --
> 13:37 - Someone stole the precinct toilet. The cops have nothing to go on.
> 14:37 - Officers dispatched to a daycare where a three-year-old was
> resisting a rest.
> 21:11 - Hole found in nudist camp wall. Officers are looking into it.
>
>

Reply via email to