public ModSicConnection CreateModSicServiceToSendCollectAndWaitItsCompletion() { var fakeRequestInfo = CreateRequestInfo(Guid.NewGuid().ToString(), FAKE_COLLECT_REQUEST_ID); var fakeSendCollectResult = new SendRequestResult() { Requests = new RequestInfo[] { fakeRequestInfo } }; var fakeCollectInfo0 = CreateCollectInfo("10.1.0.1", "CollectRequests/1"); var fakeCollectInfo1 = CreateCollectInfo("10.1.1.1", FAKE_COLLECT_REQUEST_ID); var fakeCollectInfo2 = CreateCollectInfo("10.1.1.2", "CollectRequests/1025"); var fakeCollectionsInExecution = new CollectInfo[] { fakeCollectInfo0, fakeCollectInfo1, fakeCollectInfo2 }; var mocks = new MockRepository(); var api = mocks.StrictMock <ModSicConnection>(new string[] { "", "", "", "" }); Expect.Call(api.SendCollect(null, null, null, null, null)).IgnoreArguments().Return(fakeSendCollectResult); Expect.Call(api.GetCollectionsInExecution()).Repeat.Times(5).Return(fakeCollectionsInExecution); Expect.Call(api.GetCollectionsInExecution()).Return(new CollectInfo[] { fakeCollectInfo2 }); Expect.Call(api.GetOvalResults(FAKE_COLLECT_REQUEST_ID)).Return(FAKE_OVAL_RESULTS); mocks.ReplayAll(); return(api); }
public CollectExecutionManager CreateExecutionManagerWithCannotConnectToHostExceptionScenario( ProbeResult resultForRegistry, ProbeResult resultForFamily, bool exceptionOnSystemInformationGathering = false) { MockRepository mocks = new MockRepository(); probeManager = mocks.DynamicMock <IProbeManager>(); probe = mocks.DynamicMock <IProbe>(); familyProbe = mocks.DynamicMock <IProbe>(); dataProvider = mocks.DynamicMock <IDataProvider>(); var fakeCannotConnectException = new CannotConnectToHostException(target, "Cannot Connection To Host..."); CollectInfo collectInfo = new CollectInfo() { ObjectTypes = ovalObjects }; Expect.Call(probeManager.GetProbesFor(null, FamilyEnumeration.windows)).Repeat.Any().IgnoreArguments().Return(GetSelectedProbes()); Expect.Call(probe.Execute(connectionContext, target, collectInfo)).IgnoreArguments().Throw(fakeCannotConnectException); Expect.Call(familyProbe.Execute(connectionContext, target, collectInfo)).IgnoreArguments().Return(resultForFamily); Expect.Call(dataProvider.GetSession()).Repeat.Any().Return(session); Expect.Call(dataProvider.GetTransaction(session)).Repeat.Any().Return(new Transaction(session)); if (exceptionOnSystemInformationGathering) { systemInformationService = mocks.DynamicMock <ISystemInformationService>(); Expect.Call(probeManager.GetSystemInformationService(FamilyEnumeration.windows)).IgnoreArguments().Return(systemInformationService); Expect.Call(systemInformationService.GetSystemInformationFrom(null)).IgnoreArguments().Throw(fakeCannotConnectException); } mocks.ReplayAll(); return(new CollectExecutionManager(probeManager) { Target = target, connectionContext = connectionContext }); }
public BoolWithPrimaryKeyView Collect(string publishID) { CollectInfo tempCollectInfo = ((CollectInfoDao)IcollectInfo).GetUserCollectInfo(new MyCommunityBehaviorView() { PublishID = publishID }); bool operResult = false; string operID = string.Empty; if (tempCollectInfo == null) { CollectInfo collectInfo = new CollectInfo() { ID = Guid.NewGuid().ToString(), CollectorID = this.UserID, CollectorName = this.UserName, CollectTime = DateTime.Now, PublishID = publishID, CollectValid = ((int)MiicValidTypeSetting.Valid).ToString() }; operID = collectInfo.ID; operResult = IcollectInfo.Insert(collectInfo); } else { operResult = IcollectInfo.Delete(tempCollectInfo.ID); } BoolWithPrimaryKeyView result = new BoolWithPrimaryKeyView() { PrimaryID = operID, result = operResult }; return(result); }
/// <summary> /// Return the collectRequest in execution on scheduler /// </summary> /// <returns></returns> public IEnumerable <CollectInfo> GetCollectRequestsInExecution(string clientId = null) { var collectInfos = new List <CollectInfo>(); // var collectRequestIds = this.ScheduleController.GetCollectRequestIdRunning(); var collectRequestIds = this.ScheduleController.GetCollectRequestIdList(); if (collectRequestIds != null) { using (var session = Repository.GetSession()) { foreach (var id in collectRequestIds) { CollectRequest collectRequest = Repository.GetCollectRequest(session, id.Key); CollectInfo collectInfo = CollectAssembler.CreateCollectInfoFromCollectRequest(collectRequest); collectInfo.StartTime = id.Value; if (String.IsNullOrEmpty(clientId) || String.IsNullOrEmpty(collectInfo.ClientId) || collectInfo.ClientId == clientId) { collectInfos.Add(collectInfo); } } } } return(collectInfos); }
/// <summary> /// Executes a normal collect, using the system datasource for data collecting. /// </summary> /// <param name="ovalComponent">The oval component.</param> /// <param name="collectInfo">The collect info.</param> /// <param name="id">The id parameter is 'a sequencial number controlled by external scope.</param> /// <returns></returns> private CollectedObject ProcessCollect(Definitions.ObjectType ovalComponent, CollectInfo collectInfo, ProbeResultBuilder probeResultBuilder, ref int id) { CollectedObject collectedObject = null; var allItemsToCollect = this.TryToGetItemsToCollect(ovalComponent, collectInfo.Variables); if (allItemsToCollect.Count() > 0) { collectedObject = new CollectedObject(ovalComponent.id); foreach (var itemToCollect in allItemsToCollect) { var collectedItems = ObjectCollector.CollectDataForSystemItem(itemToCollect); foreach (var collectedItem in collectedItems) { var itemType = probeResultBuilder.GetItemType(collectedItem.ItemType); if (itemType == null) { collectedItem.ItemType.id = id.ToString(); id++; } else { collectedItem.ItemType = itemType; } collectedObject.AddItemToSystemData(collectedItem.ItemType); var variables = collectInfo.GetVariableValueForOvalComponent(collectedObject.ObjectType.id); collectedObject.AddVariableReference(variables); ExecutionLogBuilder.AddDetailInformation(collectedItem.ExecutionLog); } } collectedObject.UpdateCollectedObjectStatus(); } return(collectedObject); }
public void Should_be_possible_to_execute_a_simple_file_collect() { // Arrange file_item fakeFileItem = this.CreateFakeFileItem("c:\\windows\\ODBC.ini", null, null); CollectInfo fakeCollectInfo = this.getFakeCollectInfo("definitionsWithOnlyObjects.xml"); FileProber fileProber = this.GetMockedFileProber(fakeFileItem); // Act ProbeResult collectResult = fileProber.Execute(fakeContext, fakeTargetInfo, fakeCollectInfo); // Assert Assert.IsNotNull(collectResult, "The result of probe execution cannot be null."); Assert.IsNotNull(collectResult.CollectedObjects, "There are no collected objects."); Assert.AreEqual(2, collectResult.CollectedObjects.Count(), "Unexpected quantity of collected objects"); CollectedObject fileObjectToAssert = collectResult.CollectedObjects.ElementAt(0); Assert.IsNotNull(fileObjectToAssert.ObjectType, "The first collected object cannot null."); Assert.AreEqual("oval:modulo:obj:9000", fileObjectToAssert.ObjectType.id, "The identificator of [collected object] and [definitions object] must be equal."); Assert.AreEqual(FlagEnumeration.complete, fileObjectToAssert.ObjectType.flag, "A successfully gathering must generate a collected object with flag equal to 'complete'."); Assert.IsNotNull(fileObjectToAssert.ObjectType.reference, "A successfully gathering must generate at least one item referenced"); Assert.AreEqual(1, fileObjectToAssert.ObjectType.reference.Count(), "Unexpected number of generated items for this object collected"); Assert.AreEqual(fileObjectToAssert.SystemData.Count(), fileObjectToAssert.ObjectType.reference.Count(), "The number of referenced items in collected object should be equal to generated items quantity."); }
/// <summary> /// Collects the information for variableProbes. The variable prober not needs a real systemDataSource. /// The SystemDataSource implementation for this prober, is only for compatibility with the architecture. /// Because this, is necessary configure a systemDataSource with the set of variables for the creation of /// Items. /// </summary> /// <param name="collectInfo">The collect info.</param> /// <returns></returns> protected override ProbeResultBuilder CollectInformation(CollectInfo collectInfo) { ((VariableObjectCollector)this.ObjectCollector).VariableEvaluated = collectInfo.Variables; return(base.CollectInformation(collectInfo)); }
/// <summary> /// 设置绑定到当前线程上下文的 CollectInfo /// </summary> /// <returns></returns> public static void SetCollectInfo(CollectInfo collectInfo) { CallContext.SetData(KEY_COLLECT_INFO, collectInfo); }
/// <summary> /// 开始采集 /// </summary> /// <param name="cancellationToken"></param> /// <param name="collectInfo"></param> public void Start(CancellationToken cancellationToken, CollectInfo collectInfo) { this._collect = collectInfo; // 重置任务状态 this._collectTaskDal.Update(collectInfo.Id, CollectTaskStatus.Running, CollectTaskStatus.None); if (cancellationToken.IsCancellationRequested) { return; } // 执行初始化脚本,不做异常捕获,发生异常直接退出 using (var initInvoker = new CollectTaskInvoker(this.State)) { initInvoker.Invoke(collectInfo, null); } if (cancellationToken.IsCancellationRequested) { return; } // 循环执行 while (true) { // 取消执行,等待其他任务结束 if (cancellationToken.IsCancellationRequested) { if (this.State.RunningTaskCount > 0) { Thread.Sleep(500); continue; } return; } // 请求执行 this._sh.WaitOne(); var taskInfo = this._collectTaskDal.SelectSingle(collectInfo.Id, CollectTaskStatus.None); if (taskInfo == null) { taskInfo = this._collectTaskDal.SelectSingle(collectInfo.Id, CollectTaskStatus.Error); } // 获取不到,等待其他任务结束 if (taskInfo == null) { if (this.State.RunningTaskCount > 0) { Thread.Sleep(500); this._sh.Release(); continue; } return; } taskInfo.Status = CollectTaskStatus.Running; taskInfo.RetryCount++; this._collectTaskDal.Update(taskInfo); // 发起新线程,执行任务 Task.Factory.StartNew((objTask) => { this.State.RunningTaskCount = 1; CollectTaskInvoker invoker = null; var refTask = objTask as CollectTaskInfo; var invokeArgs = new CollectTaskInvokeCompleteArgs() { Task = refTask }; try { invoker = this._lock.SafeReadValue(() => { if (this._invokers.Count > 0) { return(this._invokers.Dequeue()); } return(new CollectTaskInvoker(this.State)); }); invoker.Invoke(this._collect, refTask); refTask.Status = CollectTaskStatus.Complete; this._collectTaskDal.Update(refTask); invokeArgs.Success = true; } catch (Exception ex) { refTask.Status = CollectTaskStatus.Error; if (refTask.RetryCount >= this._retry) { refTask.Status = CollectTaskStatus.Faild; } this._collectTaskDal.Update(refTask); invokeArgs.Success = false; invokeArgs.Error = ex; } finally { // 单个任务执行结束 if (invoker != null) { this._lock.SafeSetValue(t => this._invokers.Enqueue(t), invoker); } if (invokeArgs.Success) { this.State.CompleteTaskCount = 1; } else { this.State.ErrorTaskCount = 1; } this.OnCollectTaskInvokeComplete?.Invoke(this, invokeArgs); this.State.RunningTaskCount = -1; this._sh.Release(); } }, taskInfo); } }
public static string GetCollectUrl(PublishmentSystemInfo publishmentSystemInfo, CollectInfo collectInfo, string wxOpenId) { var attributes = new NameValueCollection { { "publishmentSystemID", collectInfo.PublishmentSystemId.ToString() }, { "collectID", collectInfo.Id.ToString() }, { "wxOpenID", wxOpenId } }; return(PageUtils.AddQueryString(GetCollectUrl(publishmentSystemInfo), attributes)); }
public GroupSIDProberTest() { FakeCollectInfo = GetFakeCollectInfo("oval:modulo:obj:1110"); FakeItemsToReturnByItemTypeGenerator = new ItemType[] { new group_sid_item() }; FakeCollectedItems = new CollectedItem[] { ProbeHelper.CreateFakeCollectedItem(this.CreateFakeGroupSIDItemType()) }; }
public override void Submit_OnClick(object sender, EventArgs e) { if (Page.IsPostBack && Page.IsValid) { var selectedStep = 0; if (PhStep1.Visible) { selectedStep = 1; } else if (PhStep2.Visible) { selectedStep = 2; } else if (PhStep3.Visible) { selectedStep = 3; } PhStep1.Visible = PhStep2.Visible = PhStep3.Visible = false; if (selectedStep == 1) { var isConflict = false; var conflictKeywords = string.Empty; if (!string.IsNullOrEmpty(TbKeywords.Text)) { if (_collectId > 0) { var collectInfo = DataProviderWx.CollectDao.GetCollectInfo(_collectId); isConflict = KeywordManager.IsKeywordUpdateConflict(PublishmentSystemId, collectInfo.KeywordId, PageUtils.FilterXss(TbKeywords.Text), out conflictKeywords); } else { isConflict = KeywordManager.IsKeywordInsertConflict(PublishmentSystemId, PageUtils.FilterXss(TbKeywords.Text), out conflictKeywords); } } if (isConflict) { FailMessage($"触发关键词“{conflictKeywords}”已存在,请设置其他关键词"); PhStep1.Visible = true; } else { PhStep2.Visible = true; } } else if (selectedStep == 2) { PhStep3.Visible = true; BtnSubmit.Text = "确 认"; } else if (selectedStep == 3) { var collectInfo = new CollectInfo(); if (_collectId > 0) { collectInfo = DataProviderWx.CollectDao.GetCollectInfo(_collectId); } collectInfo.PublishmentSystemId = PublishmentSystemId; collectInfo.KeywordId = DataProviderWx.KeywordDao.GetKeywordId(PublishmentSystemId, _collectId > 0, TbKeywords.Text, EKeywordType.Collect, collectInfo.KeywordId); collectInfo.IsDisabled = !CbIsEnabled.Checked; collectInfo.StartDate = DtbStartDate.DateTime; collectInfo.EndDate = DtbEndDate.DateTime; collectInfo.Title = PageUtils.FilterXss(TbTitle.Text); collectInfo.ImageUrl = ImageUrl.Value;; collectInfo.Summary = TbSummary.Text; collectInfo.ContentImageUrl = ContentImageUrl.Value; collectInfo.ContentDescription = TbContentDescription.Text; collectInfo.ContentMaxVote = TranslateUtils.ToInt(TbContentMaxVote.Text); collectInfo.ContentIsCheck = TranslateUtils.ToBool(DdlContentIsCheck.SelectedValue); collectInfo.EndTitle = TbEndTitle.Text; collectInfo.EndImageUrl = EndImageUrl.Value; collectInfo.EndSummary = TbEndSummary.Text; try { if (_collectId > 0) { DataProviderWx.CollectDao.Update(collectInfo); LogUtils.AddAdminLog(Body.AdministratorName, "修改征集活动", $"征集活动:{TbTitle.Text}"); SuccessMessage("修改征集活动成功!"); } else { _collectId = DataProviderWx.CollectDao.Insert(collectInfo); LogUtils.AddAdminLog(Body.AdministratorName, "添加征集活动", $"征集活动:{TbTitle.Text}"); SuccessMessage("添加征集活动成功!"); } var redirectUrl = PageCollect.GetRedirectUrl(PublishmentSystemId); AddWaitAndRedirectScript(redirectUrl); } catch (Exception ex) { FailMessage(ex, "征集活动设置失败!"); } BtnSubmit.Visible = false; BtnReturn.Visible = false; } } }
public AccessTokenProberTest() { FakeCollectInfo = GetFakeCollectInfo("oval:modulo:obj:840"); FakeItemsToCollect = new ItemType[] { new accesstoken_item() }; FakeCollectedItems = new CollectedItem[] { ProbeHelper.CreateFakeCollectedItem(new accesstoken_item()) }; }
public TextFileContentProberUnixTests() { FakeItemsToCollect = new ItemType[] { new textfilecontent_item() }; FakeCollectedItems = new CollectedItem[] { ProbeHelper.CreateFakeCollectedItem(new textfilecontent_item()) }; FakeCollectInfo = GetFakeCollectInfo("oval:modulo:obj:900"); }
public SIDProberTest() { FakeCollectInfo = GetFakeCollectInfo("oval:modulo:obj:8"); FakeItemsToBeReturnedByItemTypeGenerator = new ItemType[] { CreateFakeSidItem() }; FakeCollectedItems = new CollectedItem[] { ProbeHelper.CreateFakeCollectedItem(CreateFakeSidItem()) }; }
public FileContentProbeTest() { FakeItemsToReturn = new ItemType[] { CreateFakeTextFileContent() }; FakeCollectedItem = new CollectedItem[] { ProbeHelper.CreateFakeCollectedItem(CreateFakeTextFileContent()) }; FakeCollectInfo = GetFakeCollectInfo("oval:modulo:obj:9"); }
/// <summary> /// 显示收数时段 /// </summary> private void ShowCollectDateList() { try { List<CollectInfo> collectList = new List<CollectInfo>(); CodeMaster_cmt_Info cmt = new CodeMaster_cmt_Info(); cmt.cmt_cKey1 = Common.DefineConstantValue.CodeMasterDefine.KEY1_RecordCollectInterval.ToString(); List<CodeMaster_cmt_Info> cmtList = _icmBL.FindRecord(cmt); cmtList = cmtList.OrderBy(p => p.cmt_cRemark).ToList(); if (cmtList != null) { foreach (CodeMaster_cmt_Info item in cmtList) { if (item != null) { CollectInfo info = new CollectInfo(); info.StartTime = DateTime.Parse(item.cmt_cRemark).ToString("HH:mm"); info.Name = item.cmt_cRemark2; info.Enable = item.cmt_fNumber == 1 ? "启用" : "停用"; info.TimeType = Common.DefineConstantValue.GetMealTypeDesc(item.cmt_cValue); collectList.Add(info); } } _codeMasterList = cmtList; //DataTable dt = new DataTable(); //dt.Columns.Add(new DataColumn("StartTime", typeof(DateTime)));//执行时间 //dt.Columns.Add(new DataColumn("TimeType", typeof(string)));//时段类型 //for (int index = 0; index < cmtList.Count; index++) //{ // CollectInfo cinfo = new CollectInfo(); // cinfo.Name = cmtList[index].cmt_cRemark2; // try // { // DateTime startTime = FormatDate(cmtList[index].cmt_cRemark); // DataRow dr = dt.NewRow(); // dr["StartTime"] = startTime; // dr["TimeType"] = cmtList[index].cmt_cValue; // dt.Rows.Add(dr);//記錄所有時間段 // cinfo.StartTime = startTime.ToString("HH:mm"); // cinfo.EndTime = endTime.ToString("HH:mm"); // } // catch // { // } // if (cmtList[index].cmt_fNumber > 0) // { // cinfo.Enable = "启用"; // } // else // { // cinfo.Enable = "停用"; // } // collectList.Add(cinfo); //} //SetCurrentTime(dt); } this.lvwCollectList.SetDataSource(collectList); } catch { } }
public override void Submit_OnClick(object sender, EventArgs e) { if (Page.IsPostBack && Page.IsValid) { var selectedStep = 0; if (phStep1.Visible) { selectedStep = 1; } else if (phStep2.Visible) { selectedStep = 2; } else if (phStep3.Visible) { selectedStep = 3; } phStep1.Visible = phStep2.Visible = phStep3.Visible = false; if (selectedStep == 1) { var isConflict = false; var conflictKeywords = string.Empty; if (!string.IsNullOrEmpty(tbKeywords.Text)) { if (collectID > 0) { var collectInfo = DataProviderWX.CollectDAO.GetCollectInfo(collectID); isConflict = KeywordManager.IsKeywordUpdateConflict(PublishmentSystemID, collectInfo.KeywordID, PageUtils.FilterXSS(tbKeywords.Text), out conflictKeywords); } else { isConflict = KeywordManager.IsKeywordInsertConflict(PublishmentSystemID, PageUtils.FilterXSS(tbKeywords.Text), out conflictKeywords); } } if (isConflict) { FailMessage($"触发关键词“{conflictKeywords}”已存在,请设置其他关键词"); phStep1.Visible = true; } else { phStep2.Visible = true; } } else if (selectedStep == 2) { phStep3.Visible = true; btnSubmit.Text = "确 认"; } else if (selectedStep == 3) { var collectInfo = new CollectInfo(); if (collectID > 0) { collectInfo = DataProviderWX.CollectDAO.GetCollectInfo(collectID); } collectInfo.PublishmentSystemID = PublishmentSystemID; collectInfo.KeywordID = DataProviderWX.KeywordDAO.GetKeywordID(PublishmentSystemID, collectID > 0, tbKeywords.Text, EKeywordType.Collect, collectInfo.KeywordID); collectInfo.IsDisabled = !cbIsEnabled.Checked; collectInfo.StartDate = dtbStartDate.DateTime; collectInfo.EndDate = dtbEndDate.DateTime; collectInfo.Title = PageUtils.FilterXSS(tbTitle.Text); collectInfo.ImageUrl = imageUrl.Value;; collectInfo.Summary = tbSummary.Text; collectInfo.ContentImageUrl = contentImageUrl.Value; collectInfo.ContentDescription = tbContentDescription.Text; collectInfo.ContentMaxVote = TranslateUtils.ToInt(tbContentMaxVote.Text); collectInfo.ContentIsCheck = TranslateUtils.ToBool(ddlContentIsCheck.SelectedValue); collectInfo.EndTitle = tbEndTitle.Text; collectInfo.EndImageUrl = endImageUrl.Value; collectInfo.EndSummary = tbEndSummary.Text; try { if (collectID > 0) { DataProviderWX.CollectDAO.Update(collectInfo); LogUtils.AddLog(BaiRongDataProvider.AdministratorDao.UserName, "修改征集活动", $"征集活动:{tbTitle.Text}"); SuccessMessage("修改征集活动成功!"); } else { collectID = DataProviderWX.CollectDAO.Insert(collectInfo); LogUtils.AddLog(BaiRongDataProvider.AdministratorDao.UserName, "添加征集活动", $"征集活动:{tbTitle.Text}"); SuccessMessage("添加征集活动成功!"); } var redirectUrl = PageUtils.GetWXUrl( $"background_collect.aspx?publishmentSystemID={PublishmentSystemID}"); AddWaitAndRedirectScript(redirectUrl); } catch (Exception ex) { FailMessage(ex, "征集活动设置失败!"); } btnSubmit.Visible = false; btnReturn.Visible = false; } } }
public UserProberTests() { var fakeObjects = new Definitions.ObjectType[] { new UserObjectFactory().NewObject("guest") }; this.FakeCollectInfo = ProbeHelper.CreateFakeCollectInfo(fakeObjects, null, null); }
public EnvironmentVariableProberTest() { FakeItemsToCollect = new ItemType[] { GetFakeEnvironmentVariableItem() }; FakeCollectedItems = new CollectedItem[] { GetFakeCollectedItem() }; FakeCollectInfo = GetFakeCollectInfo("oval:modulo:obj:2360"); }
public RegKeyEffectiveRightsProberTest() { FakeCollectInfo = GetFakeCollectInfo("oval:modulo:obj:750"); FakeItemsToReturnByItemTypeGenerator = new ItemType[] { new regkeyeffectiverights_item() }; FakeCollectedItems = new CollectedItem[] { ProbeHelper.CreateFakeCollectedItem(new regkeyeffectiverights_item()) }; }
public UserSID55ProberTest() { FakeCollectInfo = this.GetFakeCollectInfo("oval:modulo:obj:1080"); FakeItemsToBeReturnedByItemTypeGenerator = new ItemType[] { CreateFakeUserSIDItem() }; FakeCollectedItems = CreateFakeCollectedItems(); }
public FileAuditedPermissionsProberTests() { FakeItemsToCollect = new ItemType[] { new fileauditedpermissions_item() }; FakeCollectedItems = new CollectedItem[] { ProbeHelper.CreateFakeCollectedItem(FakeItemsToCollect.First()) }; FakeCollectInfo = GetFakeCollectInfo("2400"); }