static async Task Main(string[] args) { var gaugeProjectRoot = Environment.GetEnvironmentVariable("GAUGE_PROJECT_ROOT"); var gaugeLogsDir = Environment.GetEnvironmentVariable("logs_directory"); var internalTraceLogginDir = Path.Combine(gaugeProjectRoot, gaugeLogsDir); TraceLogger = TraceLogManager.Instance.WithBaseDir(internalTraceLogginDir).GetLogger <Program>(); var envVariables = Environment.GetEnvironmentVariables(); foreach (var envVariableKey in envVariables.Keys) { TraceLogger.Verbose($"{envVariableKey}: {envVariables[envVariableKey]}"); } var configuration = new ConfigurationBuilder() .Add(new EnvironmentVariablesConfigurationProvider("RP_", "_", EnvironmentVariableTarget.Process)) .Build(); var rpUri = configuration.GetValue <string>("Uri"); var rpProject = configuration.GetValue <string>("Project"); var rpApiToken = configuration.GetValue <string>("Uuid"); var apiClientService = new Service(new Uri(rpUri), rpProject, rpApiToken); var sender = new Sender(apiClientService, configuration); var channelOptions = new List <ChannelOption> { new ChannelOption(ChannelOptions.MaxReceiveMessageLength, -1) }; var server = new Server(channelOptions); ServerServiceDefinition messagesHandlerService; if (configuration.GetValue("Enabled", true)) { messagesHandlerService = Reporter.BindService(new ReportMessagesHandler(server, sender)); } else { messagesHandlerService = Reporter.BindService(new EmptyMessagesHandler(server)); } server.Services.Add(messagesHandlerService); var gaugePort = server.Ports.Add(new ServerPort("localhost", 0, ServerCredentials.Insecure)); server.Start(); Console.Write($"Listening on port:{gaugePort}"); TraceLogger.Info("Server has started."); await server.ShutdownTask; //var rpUri = new Uri(Config.GetValue<string>("Uri")); //var rpProject = Config.GetValue<string>("Project"); //var rpUuid = Config.GetValue<string>("Uuid"); //var service = new Service(rpUri, rpProject, rpUuid); //var launchReporter = new LaunchReporter(service, Config, null); //var tcpClientWrapper = new TcpClientWrapper(Gauge.CSharp.Core.Utils.GaugeApiPort); //using (var gaugeConnection = new GaugeConnection(tcpClientWrapper)) //{ // while (gaugeConnection.Connected) // { // try // { // TraceLogger.Verbose($"Reading message..."); // var messageBytes = gaugeConnection.ReadBytes(); // TraceLogger.Verbose($"Read message. Length: {messageBytes.Count()}"); // var message = Message.Parser.ParseFrom(messageBytes.ToArray()); // TraceLogger.Verbose($"Received event {message.MessageType}"); // //if (message.MessageType == Message.Types.MessageType.SuiteExecutionResult) // //{ // // var suiteExecutionResult = message.SuiteExecutionResult.SuiteResult; // // var launchStartDateTime = DateTime.UtcNow.AddMilliseconds(-suiteExecutionResult.ExecutionTime); // // launchReporter.Start(new Client.Requests.StartLaunchRequest // // { // // Name = Config.GetValue("Launch:Name", suiteExecutionResult.ProjectName), // // Description = Config.GetValue("Launch:Description", string.Empty), // // Tags = Config.GetValues("Launch:Tags", new List<string>()).ToList(), // // StartTime = launchStartDateTime // // }); // // foreach (var specResult in suiteExecutionResult.SpecResults) // // { // // var specStartTime = launchStartDateTime; // // var specReporter = launchReporter.StartChildTestReporter(new Client.Requests.StartTestItemRequest // // { // // Type = Client.Models.TestItemType.Suite, // // Name = specResult.ProtoSpec.SpecHeading, // // Description = string.Join("", specResult.ProtoSpec.Items.Where(i => i.ItemType == ProtoItem.Types.ItemType.Comment).Select(c => c.Comment.Text)), // // StartTime = specStartTime, // // Tags = specResult.ProtoSpec.Tags.Select(t => t.ToString()).ToList() // // }); // // foreach (var scenarioResult in specResult.ProtoSpec.Items.Where(i => i.ItemType == ProtoItem.Types.ItemType.Scenario || i.ItemType == ProtoItem.Types.ItemType.TableDrivenScenario)) // // { // // ProtoScenario scenario; // // switch (scenarioResult.ItemType) // // { // // case ProtoItem.Types.ItemType.Scenario: // // scenario = scenarioResult.Scenario; // // break; // // case ProtoItem.Types.ItemType.TableDrivenScenario: // // scenario = scenarioResult.TableDrivenScenario.Scenario; // // break; // // default: // // scenario = scenarioResult.Scenario; // // break; // // } // // var scenarioStartTime = specStartTime; // // var scenarioReporter = specReporter.StartChildTestReporter(new Client.Requests.StartTestItemRequest // // { // // Type = Client.Models.TestItemType.Step, // // StartTime = scenarioStartTime, // // Name = scenario.ScenarioHeading, // // Description = string.Join("", scenario.ScenarioItems.Where(i => i.ItemType == ProtoItem.Types.ItemType.Comment).Select(c => c.Comment.Text)), // // Tags = scenario.Tags.Select(t => t.ToString()).ToList() // // }); // // // internal log ("rp_log_enabled" property) // // if (Config.GetValue("log:enabled", false)) // // { // // scenarioReporter.Log(new Client.Requests.AddLogItemRequest // // { // // Text = "Spec Result Proto", // // Level = Client.Models.LogLevel.Trace, // // Time = DateTime.UtcNow, // // Attach = new Client.Models.Attach("Spec", "application/json", System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(specResult))) // // }); // // scenarioReporter.Log(new Client.Requests.AddLogItemRequest // // { // // Text = "Scenario Result Proto", // // Level = Client.Models.LogLevel.Trace, // // Time = DateTime.UtcNow, // // Attach = new Client.Models.Attach("Scenario", "application/json", System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(scenarioResult))) // // }); // // } // // var lastStepStartTime = scenarioStartTime; // // if (scenario.ScenarioItems != null) // // { // // foreach (var stepResult in scenario.ScenarioItems.Where(i => i.ItemType == ProtoItem.Types.ItemType.Step)) // // { // // var text = "!!!MARKDOWN_MODE!!!" + stepResult.Step.ActualText; // // var stepLogLevel = stepResult.Step.StepExecutionResult.ExecutionResult.Failed ? Client.Models.LogLevel.Error : Client.Models.LogLevel.Info; // // // if step argument is table // // var tableParameter = stepResult.Step.Fragments.FirstOrDefault(f => f.Parameter?.Table != null)?.Parameter.Table; // // if (tableParameter != null) // // { // // text += Environment.NewLine + Environment.NewLine + "| " + string.Join(" | ", tableParameter.Headers.Cells.ToArray()) + " |"; // // text += Environment.NewLine + "| " + string.Join(" | ", tableParameter.Headers.Cells.Select(c => "---")) + " |"; // // foreach (var tableRow in tableParameter.Rows) // // { // // text += Environment.NewLine + "| " + string.Join(" | ", tableRow.Cells.ToArray()) + " |"; // // } // // } // // // if dynamic arguments // // var dynamicParameteres = stepResult.Step.Fragments.Where(f => f.FragmentType == Fragment.Types.FragmentType.Parameter && f.Parameter.ParameterType == Parameter.Types.ParameterType.Dynamic).Select(f => f.Parameter); // // if (dynamicParameteres.Count() != 0) // // { // // text += Environment.NewLine; // // foreach (var dynamicParameter in dynamicParameteres) // // { // // text += $"{Environment.NewLine}{dynamicParameter.Name}: {dynamicParameter.Value}"; // // } // // } // // if (stepResult.Step.StepExecutionResult.ExecutionResult.Failed) // // { // // text += $"{Environment.NewLine}{Environment.NewLine}{stepResult.Step.StepExecutionResult.ExecutionResult.ErrorMessage}{Environment.NewLine}{stepResult.Step.StepExecutionResult.ExecutionResult.StackTrace}"; // // } // // scenarioReporter.Log(new Client.Requests.AddLogItemRequest // // { // // Level = stepLogLevel, // // Time = lastStepStartTime, // // Text = text // // }); // // if (stepResult.Step.StepExecutionResult.ExecutionResult.ScreenShot?.Length != 0) // // { // // scenarioReporter.Log(new Client.Requests.AddLogItemRequest // // { // // Level = Client.Models.LogLevel.Debug, // // Time = lastStepStartTime, // // Text = "Screenshot", // // Attach = new Client.Models.Attach("Screenshot", "image/png", stepResult.Step.StepExecutionResult.ExecutionResult.ScreenShot.ToByteArray()) // // }); // // } // // lastStepStartTime = lastStepStartTime.AddMilliseconds(stepResult.Step.StepExecutionResult.ExecutionResult.ExecutionTime); // // } // // } // // scenarioReporter.Finish(new Client.Requests.FinishTestItemRequest // // { // // EndTime = scenarioStartTime.AddMilliseconds(scenario.ExecutionTime), // // Status = _statusMap[scenario.ExecutionStatus] // // }); // // } // // var specFinishStatus = specResult.Failed ? Client.Models.Status.Failed : Client.Models.Status.Passed; // // specReporter.Finish(new Client.Requests.FinishTestItemRequest // // { // // Status = specFinishStatus, // // EndTime = specStartTime.AddMilliseconds(specResult.ExecutionTime) // // }); // // } // // launchReporter.Finish(new Client.Requests.FinishLaunchRequest // // { // // EndTime = DateTime.UtcNow // // }); // //} // if (message.MessageType == Message.Types.MessageType.KillProcessRequest) // { // Console.Write("Finishing to send results to Report Portal... "); // var sw = Stopwatch.StartNew(); // launchReporter.Sync(); // Console.WriteLine($"Elapsed: {sw.Elapsed}"); // return; // } // } // catch (Exception exp) // { // TraceLogger.Error($"Unhandler error: {exp}"); // } // } //} }