# Client Validator

The Adaptiva Client Validator is installed by the Adaptiva Client setup. It runs automatically after the Adaptiva Client is installed and can be run anytime to troubleshoot client connectivity. The Validator verifies all connectivity requirements for the client to be fully online and managed. All results are logged in the client registry.

You can run the Client Validator tool from the Adaptiva Client installation location: `%ADAPTIVACLIENT%\bin\AdaptivaClientValidator.exe`.

## Validation check detail

The following describes the validation checks being performed:

* HTTP Connection: Verifies the client can connect with cloud services.
* Cloud Relay Connection: Verifies the client can connect to the cloud relay system. The Adaptiva Server must be activated for this check to pass.
* Client-Server Messaging: Verifies the client can send and receive messages to the Adaptiva Server.
* Client-Server Handshake: Verifies the client can successfully perform a handshake with the Adaptiva Server and has obtained a client id.
* Client to Client: Checks if the client has peers in the office and verifies connectivity with those clients. Content Download: Verifies that the client can download a sample package of 8 bytes.

## Client Validator registry settings

You can view the status and results of the client validator in the registry, under `HKEY_LOCAL_MACHINE\Software\Adaptiva\client`.

### HTTP connection

**Key**: `check.http_connection`

**Values**: Passed / In Progress / Failed

**Details**:

This check confirms connectivity to:

* `http(s)://services.adaptiva.cloud`
* `https://adaptiva-releases.adaptivacdn.cloud/client/ClientSetupTest`
* `https://adaptiva-opr-content.adaptivacdn.cloud/ClientSetupTest`
* The URL of the cloud tenant if specified in the install: `https://[tenant name].adaptiva.cloud/`.

### Cloud relay connection

**Keys**: `check.cloud_relay_connection`, `check. cloud_relay_connection_detail`

**Values**: Passed / In Progress / Failed / Not Applicable

**Details**:

This check is only performed if the client is configured to use a cloud relay. If the client is not configured to use a cloud relay or is using a cloud server, the test completes with a “Not Applicable”. The \_detail key records the check result.

### Client-server messaging

**Keys**: `check.client_server_messaging`, `check.client_server_messaging_detail`

**Values**: Passed / In Progress / Failed

**Details**:

This check determines if the client can send a message to the server and gets a reply. A new client will always do a full handshake protocol and receive a NewClientConnection reply from the server. Established clients send a ping message and receive an “ack” reply from the server. The `_detail` key records the details of the server reply.

### Client-server handshake

**Keys**: `check.client_server_handshake`, `check.client_server_handshake_detail`

**Values**: Passed / In Progress / Failed

**Details**:

This check determines if the client has successfully performed a handshake with the server and obtained a client id. The `_detail` key will record the client id.

### Client-to-client messaging

**Keys**: `check.client_to_client_messaging`, `check.client_to_client_messaging`

**Values**: Passed / In Progress / Failed / Not Applicable

**Details**:

The client will request a list of local clients, to which the server will respond with a list of up to 32 client IDs and IP addresses that are in the same location as the client. The client sends a ping message to each of these clients and wait for a reply. If the client receives any reply for a local client the check passes, otherwise it fails.

If no other clients share that location, the server sends an empty client list and the check completes with a "Not Applicable" status.

### Content download

**Key**: `check.content_download`

**Values**: Passed / In Progress / Failed

**Details**:

This check determines if a client can download a built-in content package of 8 bytes in size using any method (P2P or CDN).

### Stop Checks

**Key**: `check.stop_checks`

**Values**: true / false

**Details**:

This check determines if the client validator checks have completed. The client validator will set this value to `true` if the user has accepted the current state of tests and decided to proceed.

### Check timeout

**Key**: `check.timeout`

**Values**: seconds

**Details**:

This key configures timeout in seconds for the tests run by the client. The default value is `300` (5 minutes).
