public static void Setup(TestContext context)
        {
#pragma warning disable CA1062
            _classTestContext = context;
            _verifyPassed     = (_classTestContext.Properties["verifyPassed"] as bool?) ?? true;
            _cleanLogFolder   = (_classTestContext.Properties["cleanLogFolder"] as bool?) ?? false;
            FactoryOrchestratorClient testClientConnection;
#pragma warning restore CA1062

            try
            {
                _serviceIp = _classTestContext.Properties["serviceIp"]?.ToString() ?? "127.0.0.1";
                Logger.LogMessage($"Attempting to connect to {_serviceIp}");
                testClientConnection = new FactoryOrchestratorClient(IPAddress.Parse(_serviceIp));
                // Try to connect to given IP, will throw exception if it fails
                testClientConnection.Connect().Wait();
            }
            catch (Exception e)
            {
                // TODO: Create FOServiceExe instance if one isn't detected and localhost (127.0.0.1) was used.
                Logger.LogMessage(e.ToString());
                Assert.Inconclusive("This test requires a running FactoryOrchestratorService!");
                return;
            }

            testClientConnection.ResetService(false, false).Wait();
            _testContentSrc  = _classTestContext.Properties["testContentSrc"]?.ToString() ?? @"C:\TestContentSrc";
            _testContentDest = _classTestContext.Properties["testContentDest"]?.ToString() ?? @"C:\TestContent";

            _logDest = _classTestContext.Properties["logDest"]?.ToString() ?? Path.Combine(Environment.GetEnvironmentVariable("TEMP"), "clientsampleintegrationtests");
        }
 public static void Cleanup()
 {
     if (_testExecuted)
     {
         // Reset service
         var clientConnection = new FactoryOrchestratorClient(IPAddress.Parse(_serviceIp));
         clientConnection.Connect().Wait();
         clientConnection.ResetService(false, false).Wait();
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// Instantiates a FactoryOrchestratorClient object to communicate with the Service.
        /// </summary>
        /// <param name="ip">Ip to connect to</param>
        private static async Task ConnectToFactoryOrchestrator(IPAddress ip)
        {
            Client = new FactoryOrchestratorClient(ip);
            while (!await Client.TryConnect())
            {
                Console.WriteLine(string.Format(CultureInfo.CurrentCulture, Resources.WaitingForService, ip.ToString()));
                await Task.Delay(2000);
            }

            Console.WriteLine(string.Format(CultureInfo.CurrentCulture, Resources.ConnectedToIp, ip.ToString()));
        }
        public void RunClientSample()
        {
            _testExecuted = true;
            Logger.LogMessage($"Microsoft.FactoryOrchestrator.ClientSample {_serviceIp} {_testContentSrc} {_testContentDest} {_logDest}");
            Logger.LogMessage($"verifyPassed {_verifyPassed}");

            if (_cleanLogFolder && Directory.Exists(_logDest))
            {
                Directory.Delete(_logDest, true);
            }
            // Run client sample, will create a testlist based on files in _testContentSrc if one isn't found in _testContentSrc
            var result = Microsoft.FactoryOrchestrator.ClientSample.FactoryOrchestratorNETCoreClientSample.Main(new string[] { _serviceIp, _testContentSrc, _testContentDest, _logDest }).Result;

            if (_verifyPassed)
            {
                // Get details on all failed tasks, if any.
                // The GUIDs of failed TaskRuns from the ClientSample's execution are stored in the public "List<Guid> FailedRunGuids" parameter.
                var clientConnection = new FactoryOrchestratorClient(IPAddress.Parse(_serviceIp));
                clientConnection.Connect().Wait();

                string errorString = "";
                foreach (var guid in Microsoft.FactoryOrchestrator.ClientSample.FactoryOrchestratorNETCoreClientSample.FailedRunGuids)
                {
                    // Output the task path, the reason the task failed, and the entire task output to the error string.
                    // This helps ensure failures have a unique "fingerprint" depending on what task failed and how it failed.
                    var run = clientConnection.QueryTaskRun(guid).Result;
                    errorString = $"{run.TaskPath} failed with status {run.TaskStatus}.";
                    foreach (var line in run.TaskOutput)
                    {
                        errorString += $"\n{line}";
                    }
                }

                if (!string.IsNullOrWhiteSpace(errorString))
                {
                    Assert.Fail(errorString);
                }

                Assert.AreEqual(result, 0);
            }
            else
            {
                Assert.IsTrue(result == 0 || result == 1);
            }

            // Assume at least 1 log file was created
            var logFiles = Directory.EnumerateFiles(_logDest, "*.log", SearchOption.AllDirectories);

            Assert.AreNotEqual(logFiles.Count(), 0);
        }
Exemplo n.º 5
0
        private static void DiscoverServices(int seconds)
        {
            Console.WriteLine(Resources.LookingForServices);
            var discovered = FactoryOrchestratorClient.DiscoverFactoryOrchestratorDevices(seconds);

            if (discovered.Any())
            {
                Console.WriteLine(Resources.FoundServices);
                foreach (var client in discovered)
                {
                    Console.WriteLine($"{client.HostName} - {client.OSVersion} - {client.IpAddress}:{client.Port}");
                }
            }
            else
            {
                Console.WriteLine(Resources.NoDevicesFound);
            }
        }