Legacy .NET agent - Setting up a windows service

Prerequisites

Microsoft run-time components

Install Microsoft Visual C++ Redistributable for Visual Studio 2017 from: https://www.visualstudio.com/downloads/

You can use the PowerShell commands below to install these prerequisites via a script

iwr -OutFile vc_redist.x86.exe -UseBasicParsing -Uri https://go.microsoft.com/fwlink/?LinkId=746571 Start-Process -FilePath vc_redist.x86.exe -ArgumentList "/Q" -Wait iwr -OutFile vc_redist.x64.exe -UseBasicParsing -Uri https://go.microsoft.com/fwlink/?LinkId=746572 Start-Process -FilePath vc_redist.x64.exe -ArgumentList "/Q" -Wait

Agent Token and Proxy settings

If needed, configure the coverage collector service by editing the SL.DotNet.CoverageCollectorService.exe.config file:

  • If you have not placed the sltoken.txt in the agents' folder, then in Sealights.Token put the token you've received from SeaLights

  • If a proxy is used, add a key named 'Sealights.Proxy' and set the value to a URL like "http://127.0.0.1:8888"

Coverage Collector Service Installation

  • As an Administrator, install and start the coverage collector service: 

    SL.DotNet.CoverageCollectorService.exe install start
  • Register our agent as a profiler in the services registry settings.

    1. Go to the registry under the following key: HK_LOCAL_MACHINE\System\CurrentControlSet\Services\{YourService}

    2. Add a Multi-String value called 'Environment' containing the following

      Cor_Profiler={01CA2C22-DC03-4FF5-8350-59E32A3536BA} Cor_Enable_Profiling=1 COR_PROFILER_PATH_32=C:\Sealights\SL.DotNet\x86\SL.DotNet.ProfilerLib_x86.dll COR_PROFILER_PATH_64=C:\Sealights\SL.DotNet\x64\SL.DotNet.ProfilerLib_x64.dll SL_CollectorId=GlobalCollector
  • Restart your service manually via the Service Manager console or the following PowerShell command

At the successful completion of this step, you will see a new entry appearing in the Cockpit > Live Agents Monitor for an entity called CollectorService for dotnet technology

The environment variables above added to the registry, must not contain quotes (") for the paths and have the paths updated to your local configuration (COR_PROFILER_PATH_32/64)

Capturing coverage

During the time you want to run your tests and capture coverage, you can now start and stop the coverage collection of the SeaLights agent test listener

See 'SeaLights .NET - command reference' for full parameter details

Starting coverage collection session

Before you start running your tests, you need to update the SeaLights test listener to start collecting coverage. You do so with the startCollectorServiceSession parameter.

If the Profiler doesn't start correctly, you can validate your configuration using the following approaches:

  1. Open the Event Viewer and search for possible errors under Local> Windows Log > Application

  2. Validate the correct variables were attached to the process of your service using a tool like https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer.
    You can refer to our dedicated article https://sealights.atlassian.net/wiki/spaces/SUP/pages/2062745609 for detailed instruction on how to use it with Sealights.

  3. You can enable advanced logs at the Profiler level according to the following instructions: https://sealights.atlassian.net/wiki/spaces/SUP/pages/1755480065/.NET+-+Collecting+Profiler+Logs#Collecting-Profiler-logs-from-Windows-Services

Running your tests

Now you can run any one of your tests that run against this service and capture coverage.

Stopping coverage collection session