CLRGenCMD is now a Management Point Testing and SQL Stress Loading Tool

 

UPDATE: This Tool has taken a different path, it now has two features, a SQL\Management Point load tester tool and Management Point query tool.

Using the tools load testing feature you can put SQL under severe load to simulate a large amount of Clients placing Content Location Requests with their Management Point, which in turn stresses SQL by invoking a MP Stored Procedure so as to return the Content Location Response.

I will write another tool dedicated to stressing ConfigMgr and its supporting technologies such as IIS and SQL, is on my rather extensive TODO list. Note that the GUI edition of this tool does not have both features yet.

 

UPDATE: There is a formatted output console tool that performs MP tests the same as CRLGenCMD does but without the stress testing feature, it was written before CRLGenCMD by2Pint Software, I recommend you check it out if you want to query the MP with CLR's, as you now have two options 1) unformatted output CRLGenCMD, 2) formatted output Content Locator! Thanks for writing free Community tools @2PintSoftware, keep it up

 

If you want a GUI to query the MP look for the Content Location Request Generator tool but be aware the stress testing feature is only present in this tool.

 

Description

 

A ConfigMgr 2012 tool for generating Content Location Requests (CLR) for a specified Package against a specified Management Point that takes inputs and returns the Management Point response or a descriptive error.

 

This version of the Content Location Request Generator is suited for automation via Orchestra Runbooks and was suggested by Peter Egerton a fellow Windows Management User Group Community Leader.

 

This tool was written in C# using Visual Studio 2013 as a Console application instead of a Windows Form Application, as well as utilising the ConfigMgr 2012 R2 CCM Messaging SDK it has the SDK DLL merged directly into it so that the SDK DLL itself does not need to reside in the same folder as this tool. It communicates with a Management Point via a HTTP Sender (.Net Managed code) instead of the previous way of contacting the Management Point, which was by using the legacy MP API or by spawning a Web Browser object and processing the results by using the MPCERT and MPLIST verbs.

 

 

In the above shot the first execution will get an XML response from the Management Point if it is accessible, in the second execution of the tool it is set to run silently with the same inputs with only the DLL messages (such as CLRGenCMD.exe Warning: 0 : No certificate of type ManagementPointSigning was found.) and the Reply from the Management Point due to the /silent switch.

 

This is a diagnostic tool, the Package and Package Version that you provide is just a requirement for performing a Content Location Request, if you do not care for the reply contents then any legitimate or non-legitimate Package ID and Version will suffice. 

 

There are several parameters that need to be provided for the tool to function:

 

  1. /MP: - Name of Management Point to establish connection with *
  2. /PackageID: - The Package ID for the package - can be anything *
  3. /PackageVersion: - The Package Version - can be anything *
  4. /CertFile: - The PFX certificate to be used if needed
  5. /CertPassword: - A password for the certificate
  6. /Silent - Reduce output to just the DLL and the Response
  7. /Iterations: - Load test Iterations in MS, S, M, H
  8. /IterationInterval: - Load test iteration delay in MS, S, M, H
  9. /SiteCode: - The Site servers Site Code 

 

* = Mandatory parameter

 

Note: The tool requires the .Net Framework 4.0 as a dependancy for the .Net 4.0 Managed code being used by the Microsoft.ConfigurationManagement.Messaging DLL

Note: I've only placed the 64-bit version in the ZIP, please ping me @robmvp on twitter if you want an X86 version

 

 

Perform a Load Test so as to stress SQL

 

Use the following as an example: Start CLRGenCMD.exe /MP:CM12R2SP1 /PackageID:S0200002 /PackageVersion:1 /Silent /Iterations:1h /IterationInterval:500ms

 

This will connect to a site server called CM12R2SP1, it will reference Package ID S0200002 and Version 1, output is reduced, it will repeat for 1 hour and the pulse is performed every 500 milliseconds.

 

If you was to create a CMD file and put 256 calls to CLRGenCMD, you'd be simulating 256 clients contacting their Management Point and placing stress on SQL. The more pulsing and instances the more stress until SQL beings to under-perform, keep increasing the load until you've tipped SQL, and pushed it to its operational limit (based on the hardware and configuration around it).