Using the Lync Topology Validator

A very useful utility found in the Lync Resource Kit tools download is the Topology Validator application which automatically runs a series of synthetic transactions to help validate a deployment is working properly. The tests run by the tool are all synthetic transactions an administrator could execute at a any time, but the advantage to Topology Validator is it can run all of the tests one after another.

To get started with the Topology Validaor first install the Lync Resource Kit tools. After that we need to generate a copy of the latest topology. Since simply saving a copy of the topology via Topology Builder doesn't actually generate a valid file for the tool so open up the Lync Server Management Shell and run the following command:

Export-CsConfiguration -FileName C:\Latest.zip

Now extract the zip file and copy the DocItemSet.xml file to the location of the Topology Validator installation. By default this will be C:\Program Files\Microsoft Lync Server 2010\Reskit\TopologyValidator. I would also rename this file to something like Topology.xml.

You can run the Topology Validator executable manually, but the easiest method is to edit the SampleInput.xml file found in the same folder to suit your environment. This allows you to pass the input file to Topology Validator and avoid entering parameters for the pools and users for each test.

Something else to keep in mind is that you can use the two user accounts configured in a CsHealthMonitoringConfiguration, but there are some tests (such as the phone bootstrap) which cannot be run when this option is selected. For this reason I recommend entering the test user accounts in the input file instead of electing to use the preconfigured accounts. These can be the same accounts, but you just need to make sure the usernames and passwords are included in this file. Be aware the usernames and passwords used for testing are stored in clear text within this file.

Once the test user accounts have been created and enabled on the Lync server pool make a copy of the Sample Input file and name it Input.xml before editing. I typically remove the content between the nodes in the global section. There are also two pool nodes defined by default, so you can use different settings against multiple pools, but you can remove one section if you're only testing a single pool. Important sections to fill out are:

      Topology: The file name and extension of the topology file to be used.
      Pool FQDN: Fully-qualified name of the pool to run tests against.
      TargetPstnPhoneNumber: Phone number to be dialed by your user. I did not have much luck with this number being normalized before dialed so I included a fully normalized version.
      User: For the users in the pool you should miniminally define the SipUri, UserName, and Password. You can also define a phone URI and PIN for some of the PSTN and device tests to run successfully.

My final Input.xml file is listed here:

<?xml version="1.0" encoding="utf-8" ?>
  <TopologyValidatorInput xmlns="urn:TopologyValidatorInput-Schema">
      <Topology>Topology.xml</Topology>
  <GlobalSettings>
    <Settings>
    </Settings>
  </GlobalSettings>
  <Pools>
    <Pool Fqdn="fblyncse.fabrikam.net">
      <Settings>
        <TargetPstnPhoneNumber>+441794321321</TargetPstnPhoneNumber>
        <Users>
          <User SipUri="sip:lynctest1@fabrikam.com" UserName="fabrikam\lynctest1" Password="pass@word1" Phone="+14252555000" Pin="12345" />
          <User SipUri="sip:lynctest2@fabrikam.com" UserName="fabrikam\lynctest2" Password="pass@word1" Phone="+14252556000" />
        </Users>
      </Settings>
    </Pool>
  </Pools>
</TopologyValidatorInput>

To run the tool open a command prompt (you must run it with elevated rights) and move into the TopologyValidator directory:

CD C:\Program Files\Microsoft Lync Server 2010\Reskit\TopologyValidator

Now initiate the tests with this command:

TopologyValidator.exe  /file:Input.xml

The tool will take some time to run through each of the tests, but you'll see the output begin scrolling as each test is executed. Don't worry if you don't catch all the status it reports - at the end of all the tests you'll be presented with a web page showing the summary.

This isn't a definitive way to validate a Lync deployment, but it does provide a quick starting point to verify the core services are functioning properly.