public void Job_CheckCallback_AutodetectAddress_ExpectSuccess()

in DUTRemoteTests/JobTests.cs [344:395]


        public void Job_CheckCallback_AutodetectAddress_ExpectSuccess()
        {
            var port = 14000;
            string receivedMessage = null;

            // code to listen for callback
            var server = new TcpListener(IPAddress.Any, port);
            server.Start(1);
            var callbackClient = server.AcceptTcpClientAsync();

            // start up the server for this specific test
            var rpcserver = new SimpleJsonRpc.SimpleRpcServer();
            var rpcFunctions = new SimpleDUTRemote.Functions();
            rpcserver.Register(rpcFunctions);
            var rpcserverTask = rpcserver.Start();

            string output;
            var client = new TcpClient();
            client.ConnectAsync("localhost", 8000).Wait();

            using (client)
            using (var rstream = new StreamReader(client.GetStream()))
            using (var wstream = new StreamWriter(client.GetStream()))
            {
                var request = new JsonRpcRequest();
                request.method = "StartJobWithNotification";
                request.args = new List<object>() { null, port, "systeminfo.exe" };
                wstream.WriteLine(JsonConvert.SerializeObject(request) + "\r\n");
                wstream.Flush();

                output = rstream.ReadToEnd();
            }

            JObject resp = JObject.Parse(output);
            int id = (int) resp["result"].ToObject<long>();


            if (!callbackClient.Wait(10 * 1000))
            {
                server.Stop();
                Assert.Fail("Timed out waiting for callback.");
            }

            using (var reader = new StreamReader(callbackClient.Result.GetStream()))
            {
                receivedMessage = reader.ReadToEnd();
            }
            callbackClient.Result.Dispose();

            Assert.IsTrue(receivedMessage == $"JOB {id} COMPLETED", "Callback has wrong data");

        }