Skip to content

Commit 0080c8e

Browse files
author
Steve Salas
committed
Squashed 'dotnet-tracer/' changes from a5c7d333..d2285ca1
d2285ca1 Tests pass Mock<ILog> object to BufferPool ctor 3ff5dcaf Persists source location of node encounter 562bb46f Initial update for .NET line-level coverage 60591a9a Adds license files to build scripts df4889f3 Performance improvements for .NET tracing f463a938 Adds HasReadAndExecuteAccess to EffectiveAccess f3e594f6 Grant read & execute to OpenCover.Profiler.dll 304df04b Updated usage statement for filters 83d8b01c String length is now UInt16 7b59d3cb Switched AppData folder to "Code Dx" 20d569b5 Pressing Enter will stop web application trace 0ebd0547 Pressing Enter will stop web application trace 8818a8e0 Write log messages to a folder under APPDATA f5684166 Write method-entry messages during shutdown b1e35f65 Add visit points to trace during commit 4001ba9b Removes Win32 Code Pulse installer 377f14a6 Support diagnostics mode for IIS apps 6497abfe Update test to check for 32-bit preferred bb780d48 Adds OpenCover tests to AppVeyor build d49b243d Update test for build server 33e1aeeb Adjusts heartbeat interval of controller test git-subtree-dir: dotnet-tracer git-subtree-split: d2285ca1719d9870872a09ad8a068a1e89347410
1 parent 810acb7 commit 0080c8e

File tree

125 files changed

+5796
-316
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

125 files changed

+5796
-316
lines changed

main/CodePulse.Bundle/Bundle.wxs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
<?define x86OutputFolder = "..\CodePulse.Installer\bin\Release\" ?>
88
<?define x64OutputFolder = "..\CodePulse.Installer.x64\bin\x64\Release\" ?>
99

10-
<Bundle Name="Code Pulse .NET Tracer" IconSourceFile="AppIcon.ico" Version="$(var.Version)" Manufacturer="Secure Decisions" UpgradeCode="d390f301-798f-4b2d-a740-061ab6941645">
10+
<Bundle Name="Code Pulse .NET Tracer" IconSourceFile="AppIcon.ico" Version="$(var.Version)" Manufacturer="Code Dx, Inc." UpgradeCode="d390f301-798f-4b2d-a740-061ab6941645">
1111
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
12-
<bal:WixStandardBootstrapperApplication LicenseFile="License.rtf" LogoFile="AppIcon.ico"/>
12+
<bal:WixStandardBootstrapperApplication LicenseFile="License.rtf" LogoFile="AppIcon.ico" SuppressOptionsUI="yes"/>
1313
</BootstrapperApplicationRef>
1414
<Chain>
1515
<PackageGroupRef Id="NetFx452Web"/>

main/CodePulse.Bundle/CodePulse.Bundle.wixproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<ProductVersion>3.10</ProductVersion>
77
<ProjectGuid>d390f301-798f-4b2d-a740-061ab6941645</ProjectGuid>
88
<SchemaVersion>2.0</SchemaVersion>
9-
<OutputName>CodePulse.DotNet.Tracer.Bundle</OutputName>
9+
<OutputName>CodePulse.DotNet.Tracer.Installer</OutputName>
1010
<OutputType>Bundle</OutputType>
1111
<DefineSolutionProperties>false</DefineSolutionProperties>
1212
</PropertyGroup>

main/CodePulse.Bundle/License.rtf

-40 Bytes
Binary file not shown.

main/CodePulse.Client.Test/BufferPoolTests.cs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525
using System.Threading.Tasks;
2626
using CodePulse.Client.Queue;
2727
using CodePulse.Client.Util;
28+
using log4net;
2829
using Microsoft.VisualStudio.TestTools.UnitTesting;
30+
using Moq;
2931

3032
namespace CodePulse.Client.Test
3133
{
@@ -36,7 +38,7 @@ public class BufferPoolTests
3638
public void WhenDataReadTheTotalReadableBuffersCountIsZero()
3739
{
3840
// arrange
39-
var bufferPool = new BufferPool(1, 9);
41+
var bufferPool = new BufferPool(1, 9, new Mock<ILog>().Object);
4042
var memoryStream = bufferPool.AcquireForWriting();
4143
memoryStream.Write(new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8}, 0, 9);
4244
bufferPool.Release(memoryStream);
@@ -63,7 +65,7 @@ public void WhenDataReadTheTotalReadableBuffersCountIsZero()
6365
public void WhenOneBufferIsFullOtherPartialBufferIsNotReturnedForReading()
6466
{
6567
// arrange
66-
var bufferPool = new BufferPool(2, 9);
68+
var bufferPool = new BufferPool(2, 9, new Mock<ILog>().Object);
6769

6870
var fullBuffer = bufferPool.AcquireForWriting();
6971
fullBuffer.Write(new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8}, 0, 9);
@@ -84,7 +86,7 @@ public void WhenOneBufferIsFullOtherPartialBufferIsNotReturnedForReading()
8486
public void WhenOneBufferIsFullOtherPartialBufferReturnedForWriting()
8587
{
8688
// arrange
87-
var bufferPool = new BufferPool(2, 9);
89+
var bufferPool = new BufferPool(2, 9, new Mock<ILog>().Object);
8890

8991
var fullBuffer = bufferPool.AcquireForWriting();
9092
fullBuffer.Write(new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8}, 0, 9);
@@ -105,7 +107,7 @@ public void WhenOneBufferIsFullOtherPartialBufferReturnedForWriting()
105107
public void WhenAllBuffersReadAndReturnedPoolIsEmpty()
106108
{
107109
// arrange
108-
var bufferPool = new BufferPool(2, 9);
110+
var bufferPool = new BufferPool(2, 9, new Mock<ILog>().Object);
109111

110112
var fullBuffer = bufferPool.AcquireForWriting();
111113
fullBuffer.Write(new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8}, 0, 9);
@@ -132,7 +134,7 @@ public void WhenAllBuffersReadAndReturnedPoolIsEmpty()
132134
public void WhenWriteDisabledCannotAcquireForWriting()
133135
{
134136
// arrange
135-
var bufferPool = new BufferPool(1, 10);
137+
var bufferPool = new BufferPool(1, 10, new Mock<ILog>().Object);
136138

137139
var memoryStream = bufferPool.AcquireForWriting();
138140
memoryStream.WriteByte(1);
@@ -152,7 +154,7 @@ public void WhenWriteDisabledCannotAcquireForWriting()
152154
public void WhenAllBuffersFilledBlockingOccurs()
153155
{
154156
// arrange
155-
var bufferPool = new BufferPool(2, 5);
157+
var bufferPool = new BufferPool(2, 5, new Mock<ILog>().Object);
156158

157159
var stream1 = bufferPool.AcquireForWriting();
158160
stream1.Write(new byte[] {0, 1, 2, 3, 4}, 0, 5);
@@ -177,7 +179,7 @@ public void WhenAllBuffersFilledBlockingOccurs()
177179
public void WhenNoDataBlockingOccurs()
178180
{
179181
// arrange
180-
var bufferPool = new BufferPool(2, 5);
182+
var bufferPool = new BufferPool(2, 5, new Mock<ILog>().Object);
181183

182184
// act
183185
var task = Task.Run(() =>
@@ -194,7 +196,7 @@ public void WhenNoDataBlockingOccurs()
194196
public void WhenDataBecomesAvailableBlockingClears()
195197
{
196198
// arrange
197-
var bufferPool = new BufferPool(2, 5);
199+
var bufferPool = new BufferPool(2, 5, new Mock<ILog>().Object);
198200

199201
// act
200202
var task = Task.Run(() =>

main/CodePulse.Client.Test/ControllerTests.cs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ public void WhenControllerHeartbeatIntervalChangesHeartbeatChanges()
219219
new Mock<ILog>().Object);
220220

221221
Thread.Sleep(10000);
222-
controller.SetHeartbeatInterval(200);
222+
controller.SetHeartbeatInterval(500);
223223
Thread.Sleep(10000);
224224

225225
controller.Shutdown();
@@ -230,8 +230,20 @@ public void WhenControllerHeartbeatIntervalChangesHeartbeatChanges()
230230
var slowHeartbeatTimeFrequency = heartbeatTimes[2].Subtract(heartbeatTimes[1]).TotalMilliseconds;
231231
var fastHeartbeatTimeFrequency = heartbeatTimes[heartbeatTimes.Count-1].Subtract(heartbeatTimes[heartbeatTimes.Count-2]).TotalMilliseconds;
232232

233-
Assert.IsTrue(slowHeartbeatTimeFrequency > 2000 && slowHeartbeatTimeFrequency < 5000);
234-
Assert.IsTrue(fastHeartbeatTimeFrequency > 200 && fastHeartbeatTimeFrequency < 500);
233+
// Runs in a local environment have heartbeats at ~3100 for slow and ~600 for fast, but on the build
234+
// server heartbeats can be at ~4100 for slow and ~1600 for fast, so pass this test if there's a
235+
// significant difference between the slow and fast heartbeats
236+
if (slowHeartbeatTimeFrequency - fastHeartbeatTimeFrequency <= 1750)
237+
{
238+
for (var index = 0; index < heartbeatTimes.Count; index++)
239+
{
240+
if (index == 0)
241+
continue;
242+
243+
Console.WriteLine(heartbeatTimes[index].Subtract(heartbeatTimes[index - 1]).TotalMilliseconds);
244+
}
245+
Assert.Fail($"Unexpected values for fastHeartbeatTimeFrequency ({fastHeartbeatTimeFrequency}) and slowHeartbeatTimeFrequency ({slowHeartbeatTimeFrequency})");
246+
}
235247

236248
closeSocketEvent.Set();
237249
serverTask.Wait();

main/CodePulse.Client.Test/MessageSenderManagerTests.cs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,14 @@ public void WhenStartedWithOneSenderManagerIsIdle()
6969
var socketFactory = new SocketFactory("127.0.0.1", 4998, 1);
7070

7171
// act
72-
var messageSenderManager = new MessageSenderManager(socketFactory,
72+
var logger = new Mock<ILog>().Object;
73+
var messageSenderManager = new MessageSenderManager(socketFactory,
7374
new DataConnectionHandshake(new MessageProtocol()),
74-
new BufferPool(1, 9),
75+
new BufferPool(1, 9, logger),
7576
1,
7677
1,
7778
new ErrorHandler(),
78-
new Mock<ILog>().Object);
79+
logger);
7980

8081
// assert
8182
Assert.IsTrue(messageSenderManager.IsIdle);
@@ -142,13 +143,14 @@ public void WhenStartedWithTwoSenderManagersIsIdle()
142143
var socketFactory = new SocketFactory("127.0.0.1", 4998, 1);
143144

144145
// act
145-
var messageSenderManager = new MessageSenderManager(socketFactory,
146+
var logger = new Mock<ILog>().Object;
147+
var messageSenderManager = new MessageSenderManager(socketFactory,
146148
new DataConnectionHandshake(new MessageProtocol()),
147-
new BufferPool(1, 9),
149+
new BufferPool(1, 9, logger),
148150
2,
149151
1,
150152
new ErrorHandler(),
151-
new Mock<ILog>().Object);
153+
logger);
152154

153155
// assert
154156
Assert.IsTrue(messageSenderManager.IsIdle);
@@ -178,7 +180,7 @@ public void WhenNoConnectionErrorOccursWithShutdown()
178180
// act
179181
var messageSenderManager = new MessageSenderManager(socketFactory,
180182
new DataConnectionHandshake(new MessageProtocol()),
181-
new BufferPool(1, 9),
183+
new BufferPool(1, 9, new Mock<ILog>().Object),
182184
1,
183185
1,
184186
errorHandler,
@@ -255,7 +257,7 @@ public void WhenNoConnectionForOneOfTwoErrorOccursWithShutdown()
255257
// act
256258
var messageSenderManager = new MessageSenderManager(socketFactory,
257259
new DataConnectionHandshake(new MessageProtocol()),
258-
new BufferPool(1, 9),
260+
new BufferPool(1, 9, new Mock<ILog>().Object),
259261
2,
260262
1,
261263
errorHandler,

main/CodePulse.Client.Test/MethodIdentifierTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ public void WhenMethodIdKnownClassIdReturned()
3333
{
3434
// arrange
3535
var methodIdentifier = new MethodIdentifier();
36-
var methodId = methodIdentifier.Record(1, "A", "B", 2, 3);
36+
var methodId = methodIdentifier.Record(1, "A", "B");
3737

3838
// act
39-
var retVal = methodIdentifier.Record(1, "A", "B", 2, 3);
39+
var retVal = methodIdentifier.Record(1, "A", "B");
4040

4141
// assert
4242
Assert.AreEqual(methodId, retVal);
@@ -48,10 +48,10 @@ public void WhenMethodIdUnknownClassIdReturned()
4848
{
4949
// arrange
5050
var methodIdentifier = new MethodIdentifier();
51-
var methodId = methodIdentifier.Record(1, "A", "B", 2, 3);
51+
var methodId = methodIdentifier.Record(1, "A", "B");
5252

5353
// act
54-
var retVal = methodIdentifier.Record(1, "C", "D", 2, 3);
54+
var retVal = methodIdentifier.Record(1, "C", "D");
5555

5656
// assert
5757
Assert.AreEqual(methodId + 1, retVal);

main/CodePulse.Client.Test/PooledBufferServiceTests.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@
2424
using System.Threading.Tasks;
2525
using CodePulse.Client.Message;
2626
using CodePulse.Client.Queue;
27+
using log4net;
2728
using Microsoft.VisualStudio.TestTools.UnitTesting;
29+
using Moq;
2830

2931
namespace CodePulse.Client.Test
3032
{
@@ -35,7 +37,7 @@ public class PooledBufferServiceTests
3537
public void WhenServiceIsSuspendedObtainBufferReturnsNull()
3638
{
3739
// arrange
38-
var bufferPool = new BufferPool(2, 9);
40+
var bufferPool = new BufferPool(2, 9, new Mock<ILog>().Object);
3941
var service = new PooledBufferService(bufferPool);
4042

4143
// act
@@ -51,7 +53,7 @@ public void WhenServiceIsSuspendedObtainBufferReturnsNull()
5153
public void WhenServiceIsPausedObtainBufferBlocks()
5254
{
5355
// arrange
54-
var bufferPool = new BufferPool(2, 9);
56+
var bufferPool = new BufferPool(2, 9, new Mock<ILog>().Object);
5557
var service = new PooledBufferService(bufferPool);
5658

5759
// act
@@ -86,7 +88,7 @@ public void WhenServiceIsPausedObtainBufferBlocks()
8688
public void WhenServiceIsNotSuspendedBufferIsReturned()
8789
{
8890
// arrange
89-
var bufferPool = new BufferPool(2, 9);
91+
var bufferPool = new BufferPool(2, 9, new Mock<ILog>().Object);
9092
var service = new PooledBufferService(bufferPool);
9193

9294
// act
@@ -100,7 +102,7 @@ public void WhenServiceIsNotSuspendedBufferIsReturned()
100102
public void WhenBufferRelinquishedReadableBufferCountIncreases()
101103
{
102104
// arrange
103-
var bufferPool = new BufferPool(2, 9);
105+
var bufferPool = new BufferPool(2, 9, new Mock<ILog>().Object);
104106
var service = new PooledBufferService(bufferPool);
105107
var readableBuffersBefore = bufferPool.ReadableBuffers;
106108

main/CodePulse.Client.Test/PooledMessageSenderTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public class PooledMessageSenderTests
3838
public void WhenSenderStartsItRunsUntilShutdown()
3939
{
4040
// arrange
41-
var bufferPool = new BufferPool(2, 9);
41+
var bufferPool = new BufferPool(2, 9, new Mock<ILog>().Object);
4242
var binaryWriter = new Mock<BinaryWriter>();
4343
var errorHandler = new Mock<IErrorHandler>();
4444
var logger = new Mock<ILog>();

main/CodePulse.Client/Agent/DefaultTraceAgent.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -181,17 +181,19 @@ public bool Prepare()
181181
var bufferLength = DecideBufferLength(memBudget);
182182
var numBuffers = memBudget / bufferLength;
183183

184-
_bufferPool = new BufferPool(numBuffers, bufferLength);
184+
var logger = StaticAgentConfiguration.Logger;
185+
186+
_bufferPool = new BufferPool(numBuffers, bufferLength, logger);
185187
_bufferService = new PooledBufferService(_bufferPool);
186-
TraceDataCollector = new TraceDataCollector(_messageProtocol, _bufferService, ClassIdentifier, MethodIdentifier, _errorHandler, StaticAgentConfiguration.Logger);
188+
TraceDataCollector = new TraceDataCollector(_messageProtocol, _bufferService, ClassIdentifier, MethodIdentifier, _errorHandler, logger);
187189

188190
_messageSenderManager = new MessageSenderManager(_socketFactory,
189191
_protocolVersion.DataConnectionHandshake,
190192
_bufferPool,
191193
RuntimeAgentConfiguration.NumDataSenders,
192194
RuntimeAgentConfiguration.RunId,
193195
_errorHandler,
194-
StaticAgentConfiguration.Logger);
196+
logger);
195197

196198
return true;
197199
}
@@ -274,6 +276,10 @@ private void ShutdownAgent()
274276
return;
275277
}
276278

279+
// the TraceDataCollector shutdown will use the buffer service to send any pending
280+
// method-entry messages - if the service is suspended, the messages will not reach Code Pulse
281+
TraceDataCollector?.Shutdown();
282+
277283
if (_bufferService != null)
278284
{
279285
_bufferService.SetSuspended(true);
@@ -283,7 +289,6 @@ private void ShutdownAgent()
283289
}
284290
}
285291

286-
TraceDataCollector?.Shutdown();
287292
WaitForSenderManager();
288293
_messageSenderManager?.Shutdown();
289294
_controller?.Shutdown();

0 commit comments

Comments
 (0)