public async static void SendDataToOpsConsole(List<LogStatItem> testResults) { _metadata = GetMetadata(); if (_metadata == null) { ALogger.LogInfo("SendDataToOpsConsole: There is no metadata to validate the data before sending them to OpsConsoleService."); return; } while (threadCount > Utility.ConfigUtil.ThreadLimit || !_mre.WaitOne(_checkFileTimeoutMs)) { if (threadCount >= Utility.ConfigUtil.ThreadLimit) { ALogger.LogTrace("SendDataToOpsConsole: threadCount limit reach {0}", threadCount); continue; } break; } ChangeThreadCount(1); await Task.Run(() => CreateBatch(testResults)); }
private static LogStatItem CreateLogStatInstance(string name, string value, string description, LogStatItem tmp) { var testCase = new LogStatItem { statName = name, statVal = value, uuid = tmp.uuid, timeStamp = tmp.timeStamp, machineGuid = tmp.machineGuid, product = tmp.product, installGuid = tmp.installGuid }; if (_metadata == null) { _metadata = GetMetadata(); } var index = _metadata.testschema.FindIndex(s => s.name == name); if (index == -1) { ALogger.LogWarn("Cannot find metadata for [{0}]", name); return null; } var schema = _metadata.testschema[index]; if (!schema.enabled) { return null; } if (schema.usedesc || string.IsNullOrWhiteSpace(value)) { if (!string.IsNullOrWhiteSpace(description) && description != "-") { testCase.statVal = description; } } if (schema.type == "boolean") { testCase.statVal = ParseBoolean(testCase.statVal); return testCase; } if (!string.IsNullOrEmpty(schema.unit)) { testCase.statVal = ParseUnit(testCase.statVal, schema.unit); return testCase; } if (testCase.statVal.Length <= 40) return testCase; var mapCode = _metadata.enumdict.Find(s => s.Test.Contains(name)); if (mapCode != null) { foreach (var map in mapCode.Map) { testCase.statVal = ReplaceCaseInsensitive(testCase.statVal, map.Value, "#" + map.ID, map.Display == null); if (testCase.statVal.Length <= 40) return testCase; } } if (testCase.statVal.Length <= 40) return testCase; //suppress warning message for some stats such as userID, email. var longStatIgnoreList = new List<string>() {"61","118"}; if (!longStatIgnoreList.Contains(testCase.statName)) { ALogger.LogWarn("[{0}] value length is over 40 characters, [{1}]", testCase.statName, testCase.statVal); } testCase.statVal = testCase.statVal.Substring(0, 37) + "..."; return testCase; }
private static Metadata GetMetadata(string product = "est") { if (_estMetaData != null) return _estMetaData; try { _estMetaData = new Metadata { enumdict = new List<EnumDict>(), statcodedict = new List<StatCodeDict>() }; using (var client = new OpsConsoleServiceClient(RouterBindings.Local, RouterAddresses.Local.RequestReply)) { var request = new GetMetadataRequest() { product = product }; var metadataJson = client.GetMetadata(request); _estMetaData = JsonConvert.DeserializeObject<Metadata>(metadataJson); } } catch (Exception ex) { Logger.LogWarn("GetMetadata:, cannot get/convert metadata from OpsConsole service, {0}", ex.Message); try { using (var sStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SystemTestService.Schema.json")) { using (var reader = new StreamReader(sStream)) { sStream.Seek(0, SeekOrigin.Begin); var metadataJson = reader.ReadToEnd(); _estMetaData = JsonConvert.DeserializeObject<Metadata>(metadataJson); } } } catch (Exception ex2) { Logger.LogError("GetMetadata: cannot get metadata from resource file, {0}", ex2.Message); return _estMetaData; } } return _estMetaData; }