private void PerformTest(int numOfLoadTestClients)
        {
            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();
            this.Invoke(new Action(ResetUiLoadTestOn));
            testing = true;
            for (int i = 0; i < numOfLoadTestClients; i++)
            {
                var cM = new ClientManager();
                string host = @"127.0.0.1";
                int port = 5000;
                string clientId = "testClient"+i;
                int timeout = 2;
                this.Invoke(new Action(() =>
                {
                    host = connectionAddressTextBox.Text.Trim();
                    port = int.Parse(connectionPortTextBox.Text.Trim());
                    timeout = int.Parse(connectionTimeoutTextBox.Text.Trim());
                }));

                cM.Init(
                    host,
                    port,
                    clientId,
                    timeout,
                    this, true);
                testClients.GetOrAdd(i, cM);
                Thread.Sleep(MQTTBase.THREAD_SLEEP_REST_TIME);
            }
            // wait a bit
            Thread.Sleep(500);
            for (int i = 0; i < numOfLoadTestClients; i++)
            {
                ClientManager manager;
                if (testClients.TryGetValue(i, out manager))
                {
                    manager.Disconnect(true);
                }
            }
            stopwatch.Stop();
            MessageBox.Show(String.Format("Load test completed in {0}ms with {1} clients", stopwatch.ElapsedMilliseconds, numOfLoadTestClients),
                @"Load test complete!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            // wait a bit
            Thread.Sleep(1000);
            testing = false;
            Invoke(new Action(ResetUiDisconnected));
        }