Skip to content

Commit

Permalink
Restrict monitor events in tests.
Browse files Browse the repository at this point in the history
This prevents hanging event messages from blowing up context objects
during test disposal.
  • Loading branch information
jgoz committed Nov 12, 2012
1 parent 9e8e863 commit 884dfcf
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 5 deletions.
12 changes: 7 additions & 5 deletions src/ZeroMQ.AcceptanceTests/MonitorFixtures.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ public abstract class UsingMonitor

protected ZmqMonitor ReqMonitor;
protected ZmqMonitor RepMonitor;
protected MonitorEvents ReqEvents;
protected MonitorEvents RepEvents;
protected Thread ReqThread;
protected Thread RepThread;
protected ZmqSocket Req;
Expand All @@ -33,17 +35,17 @@ public void Initialize()
RepMonitor = RepContext.CreateMonitorSocket(RepEndpoint);
Req = ReqContext.CreateSocket(SocketType.REQ);
Rep = RepContext.CreateSocket(SocketType.REP);
Req.Monitor(ReqEndpoint);
Rep.Monitor(RepEndpoint);
Req.Monitor(ReqEndpoint, ReqEvents);
Rep.Monitor(RepEndpoint, RepEvents);
EventRecorded = new ManualResetEvent(false);
ReqThread = new Thread(ReqMonitor.Start);
RepThread = new Thread(RepMonitor.Start);

ReqThread.Start();
RepThread.Start();

Fired = false;
Address = null;

ReqThread.Start();
RepThread.Start();
}

[TestFixtureTearDown]
Expand Down
26 changes: 26 additions & 0 deletions src/ZeroMQ.AcceptanceTests/ZmqMonitorTests/MonitorEvents.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,18 @@
{
using System;
using NUnit.Framework;
using ZeroMQ.Monitoring;

[TestFixture]
public class MonitorTests
{
public class WhenMonitoringListeningEvent : UsingMonitorFd
{
public WhenMonitoringListeningEvent()
{
RepEvents = MonitorEvents.Listening;
}

[TestFixtureSetUp]
public void SetUp()
{
Expand Down Expand Up @@ -41,6 +47,11 @@ public void ShouldReturnASocketPointer()

public class WhenMonitoringAcceptedEvent : UsingMonitorFd
{
public WhenMonitoringAcceptedEvent()
{
RepEvents = MonitorEvents.Accepted;
}

[TestFixtureSetUp]
public void SetUp()
{
Expand Down Expand Up @@ -75,6 +86,11 @@ public void ShouldReturnASocketPointer()

public class WhenMonitoringAcceptedEventBeforeAConnectionIsMade : UsingMonitorFd
{
public WhenMonitoringAcceptedEventBeforeAConnectionIsMade()
{
RepEvents = MonitorEvents.Accepted;
}

[TestFixtureSetUp]
public void SetUp()
{
Expand All @@ -92,6 +108,11 @@ public void ShouldNotFireTheAcceptedEvent()

public class WhenMonitoringConnectedEvent : UsingMonitorFd
{
public WhenMonitoringConnectedEvent()
{
ReqEvents = MonitorEvents.Connected;
}

[TestFixtureSetUp]
public void SetUp()
{
Expand Down Expand Up @@ -126,6 +147,11 @@ public void ShouldReturnASocketPointer()

public class WhenMonitoringClosedEvent : UsingMonitorFd
{
public WhenMonitoringClosedEvent()
{
RepEvents = MonitorEvents.Closed;
}

[TestFixtureSetUp]
public void SetUp()
{
Expand Down
1 change: 1 addition & 0 deletions src/ZeroMQ/Monitoring/ZmqMonitor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ public void Start()
}

Marshal.FreeHGlobal(ptr);
_socket.Disconnect(_endpoint);
}

/// <summary>
Expand Down

0 comments on commit 884dfcf

Please sign in to comment.