private ITemplate GetTemplate(StackFlairOptions flairOptions, StackData stackData) { ITemplate template = null; switch (flairOptions.Theme.ToLower()) { /*case "glitter": * template = new GlitterTemplate(stackData, flairOptions); * break;*/ case "black": template = new BlackTemplate(stackData, flairOptions); break; case "hotdog": template = new HotDogTemplate(stackData, flairOptions); break; case "holy": template = new HoLyTemplate(stackData, flairOptions); break; case "nimbus": template = new NimbusTemplate(stackData, flairOptions); break; default: template = new DefaultTemplate(stackData, flairOptions); break; } return(template); }
private async Task CreateDataAsync() { var baseDate = SystemClock.UtcNow.SubtractHours(1); var occurrenceDateStart = baseDate.AddMinutes(-30); var occurrenceDateMid = baseDate; var occurrenceDateEnd = baseDate.AddMinutes(30); await _stackRepository.AddAsync(StackData.GenerateStack(id: TestConstants.StackId, organizationId: TestConstants.OrganizationId, projectId: TestConstants.ProjectId)); var occurrenceDates = new List <DateTime> { occurrenceDateStart, occurrenceDateEnd, baseDate.AddMinutes(-10), baseDate.AddMinutes(-20), occurrenceDateMid, occurrenceDateMid, occurrenceDateMid, baseDate.AddMinutes(20), baseDate.AddMinutes(10), baseDate.AddSeconds(1), occurrenceDateEnd, occurrenceDateStart }; foreach (var date in occurrenceDates) { var ev = await _repository.AddAsync(EventData.GenerateEvent(projectId: TestConstants.ProjectId, organizationId: TestConstants.OrganizationId, stackId: TestConstants.StackId, occurrenceDate: date)); _ids.Add(Tuple.Create(ev.Id, date)); } await RefreshDataAsync(); }
void Awake() { StackData data = new StackData(); data.current = new SceneStage(SceneManager.GetActiveScene().name); sdatas.Push(data); }
public State GetTargetGoalState(ref StateGroup targetStates, ref StackData stackData) { foreach (var targetState in targetStates) { var foodState = new State { Target = stackData.AgentEntity, Trait = typeof(ItemContainerTrait), ValueTrait = typeof(FoodTrait), }; //只针对自身食物类物品需求的goal state if (!targetState.BelongTo(foodState)) { continue; } //如果targetState有指明物品名,则直接寻找其是否为cooker的产物 //这是因为在指定物品名的情况下,有可能会省略ValueTrait if (!IsItemInRecipes(targetState.ValueString, ref stackData)) { continue; } return(targetState); } return(default);
public StateGroup GetSettings(ref State targetState, ref StackData stackData, Allocator allocator) { var settings = new StateGroup(1, allocator); if (!targetState.ValueString.Equals(new NativeString64())) { //如果指定了物品名,那么只有一种setting,也就是targetState本身 settings.Add(targetState); } else if (targetState.ValueString.Equals(new NativeString64()) && targetState.ValueTrait != null) { //如果targetState是类别范围,需要对每种符合范围的物品做setting //todo 此处应查询define获得所有符合范围的物品名,示例里暂时从工具方法获取 var itemNames = Utils.GetItemNamesOfSpecificTrait(targetState.ValueTrait, Allocator.Temp); for (var i = 0; i < itemNames.Length; i++) { var state = targetState; state.ValueString = itemNames[i]; settings.Add(state); } itemNames.Dispose(); } return(settings); }
public async Task CanCreateUpdateRemoveAsync() { await ResetAsync(); await _repository.RemoveAllAsync(); await _client.RefreshAsync(); Assert.Equal(0, await _repository.CountAsync()); var stack = StackData.GenerateStack(projectId: TestConstants.ProjectId, organizationId: TestConstants.OrganizationId); Assert.Null(stack.Id); await _repository.AddAsync(stack); Assert.NotNull(stack.Id); await _client.RefreshAsync(); stack = await _repository.GetByIdAsync(stack.Id); Assert.NotNull(stack); stack.Description = "New Description"; await _repository.SaveAsync(stack); await _repository.RemoveAsync(stack.Id); }
IEnumerator FadeUpdate(StackData sdata) { sdata.locked = true; if (sdata.current != null) { fadeimage.gameObject.SetActive(true); for (float alfa = 0f; alfa < 1f; alfa += Time.deltaTime / durationFadeStart) { fadeimage.alpha = alfa; yield return(null); } } if (sdata.current != null) { SceneManager.UnloadSceneAsync(sdata.current.SceneName); } SceneManager.LoadScene(sdata.next.SceneName, LoadSceneMode.Additive); sdata.current = sdata.next; sdata.next = null; for (float alfa = 1f; alfa >= 0f; alfa -= Time.deltaTime / durationFadeEnd) { fadeimage.alpha = alfa; yield return(null); } fadeimage.gameObject.SetActive(false); sdata.locked = false; }
private WebHookDataContext GetWebHookDataContext(Version version) { var json = File.ReadAllText(Path.GetFullPath(@"..\..\ErrorData\1477.expected.json")); var settings = new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Ignore, ContractResolver = new ExtensionContractResolver() }; var ev = JsonConvert.DeserializeObject <PersistentEvent>(json, settings); ev.OrganizationId = TestConstants.OrganizationId; ev.ProjectId = TestConstants.ProjectId; ev.StackId = TestConstants.StackId; var context = new WebHookDataContext(version, ev, OrganizationData.GenerateSampleOrganization(), ProjectData.GenerateSampleProject()); context.Stack = StackData.GenerateStack(id: TestConstants.StackId, organizationId: TestConstants.OrganizationId, projectId: TestConstants.ProjectId, title: _formattingPluginManager.GetStackTitle(ev), signatureHash: "722e7afd4dca4a3c91f4d94fec89dfdc"); context.Stack.Tags = new TagSet { "Test" }; context.Stack.FirstOccurrence = context.Stack.LastOccurrence = ev.Date.DateTime; return(context); }
public static StackData GetFlairData(Guid associationId) { var stackAuthClient = new StackAuthClient(new UrlClient(), new JsonProtocol()); var associatedUsers = stackAuthClient.GetAssociatedUsers(associationId); associatedUsers = associatedUsers.OrderByDescending(au => au.Reputation).Where(au => au.Site.State != SiteState.Linked_Meta); int totalRep = associatedUsers.Sum(ai => ai.Reputation); string html = ""; AssociatedUser topUser = associatedUsers.First(); StackData data = new StackData() { DisplayHash = topUser.EmailHash, DisplayId = topUser.Id, DisplayName = topUser.DisplayName, DisplayUrl = topUser.Site.SiteUrl, Sites = (from u in associatedUsers select new StackSiteData() { SiteName = u.Site.Name, SiteState = u.Site.State, Reputation = u.Reputation, Url = u.Site.SiteUrl, UserId = u.Id, IsMod = u.Type == UserType.Moderator, Badges = Utility.GetBadgeCounts(u.Site, u.Id) }).ToList(), //TotalBadges = GetBadgeCounts(associatedUsers), }; return(data); }
public async Task CanDeleteOrphanedEventsByStack() { var organization = OrganizationData.GenerateSampleOrganization(_billingManager, _plans); await _organizationRepository.AddAsync(organization, o => o.ImmediateConsistency()); var project = await _projectRepository.AddAsync(ProjectData.GenerateSampleProject(), o => o.ImmediateConsistency()); var stack = await _stackRepository.AddAsync(StackData.GenerateSampleStack(), o => o.ImmediateConsistency()); await _eventRepository.AddAsync(EventData.GenerateEvents(5000, organization.Id, project.Id, stack.Id), o => o.ImmediateConsistency()); var orphanedEvents = EventData.GenerateEvents(10000, organization.Id, project.Id).ToList(); orphanedEvents.ForEach(e => e.StackId = ObjectId.GenerateNewId().ToString()); await _eventRepository.AddAsync(orphanedEvents, o => o.ImmediateConsistency()); var eventCount = await _eventRepository.CountAsync(o => o.IncludeSoftDeletes().ImmediateConsistency()); Assert.Equal(15000, eventCount); await GetService <CleanupOrphanedDataJob>().RunAsync(); eventCount = await _eventRepository.CountAsync(o => o.IncludeSoftDeletes().ImmediateConsistency()); Assert.Equal(5000, eventCount); }
public async Task WillMergeToStackWithMostEvents() { var utcNow = SystemClock.UtcNow; var originalStack = StackData.GenerateStack(); originalStack.Id = ObjectId.GenerateNewId().ToString(); originalStack.TotalOccurrences = 10; var biggerStack = originalStack.DeepClone(); biggerStack.Id = ObjectId.GenerateNewId().ToString(); biggerStack.Status = StackStatus.Fixed; biggerStack.TotalOccurrences = 100; biggerStack.LastOccurrence = originalStack.LastOccurrence.AddMinutes(1); biggerStack.SnoozeUntilUtc = originalStack.SnoozeUntilUtc = null; biggerStack.DateFixed = biggerStack.LastOccurrence.AddMinutes(1); biggerStack.Tags.Add("stack2"); biggerStack.References.Add("stack2"); biggerStack.OccurrencesAreCritical = true; originalStack = await _stackRepository.AddAsync(originalStack, o => o.ImmediateConsistency()); biggerStack = await _stackRepository.AddAsync(biggerStack, o => o.ImmediateConsistency()); await _eventRepository.AddAsync(EventData.GenerateEvents(count: 10, stackId: originalStack.Id), o => o.ImmediateConsistency()); await _eventRepository.AddAsync(EventData.GenerateEvents(count: 100, stackId: biggerStack.Id), o => o.ImmediateConsistency()); var results = await _stackRepository.FindAsync(q => q.ElasticFilter(Query <Stack> .Term(s => s.DuplicateSignature, originalStack.DuplicateSignature))); Assert.Equal(2, results.Total); var migration = GetService <FixDuplicateStacks>(); var context = new MigrationContext(GetService <ILock>(), _logger, CancellationToken.None); await migration.RunAsync(context); await RefreshDataAsync(); results = await _stackRepository.FindAsync(q => q.ElasticFilter(Query <Stack> .Term(s => s.DuplicateSignature, originalStack.DuplicateSignature))); Assert.Single(results.Documents); var updatedOriginalStack = await _stackRepository.GetByIdAsync(originalStack.Id, o => o.IncludeSoftDeletes()); Assert.True(updatedOriginalStack.IsDeleted); var updatedBiggerStack = await _stackRepository.GetByIdAsync(biggerStack.Id, o => o.IncludeSoftDeletes()); Assert.False(updatedBiggerStack.IsDeleted); Assert.Equal(originalStack.CreatedUtc, updatedBiggerStack.CreatedUtc); Assert.Equal(110, updatedBiggerStack.TotalOccurrences); Assert.Equal(StackStatus.Fixed, updatedBiggerStack.Status); Assert.Equal(biggerStack.LastOccurrence, updatedBiggerStack.LastOccurrence); Assert.Null(updatedBiggerStack.SnoozeUntilUtc); Assert.Equal(biggerStack.DateFixed, updatedBiggerStack.DateFixed); Assert.Equal(originalStack.Tags.Count + 1, updatedBiggerStack.Tags.Count); Assert.Contains("stack2", updatedBiggerStack.Tags); Assert.Equal(originalStack.References.Count + 1, updatedBiggerStack.References.Count); Assert.Contains("stack2", updatedBiggerStack.References); Assert.True(updatedBiggerStack.OccurrencesAreCritical); }
public async Task CanFindManyAsync() { Assert.Equal(0, await _repository.CountAsync()); await _repository.AddAsync(StackData.GenerateSampleStacks()); await RefreshDataAsync(); var stacks = await _repository.GetByOrganizationIdAsync(TestConstants.OrganizationId, o => o.PageNumber(1).PageLimit(1)); Assert.NotNull(stacks); Assert.Equal(3, stacks.Total); Assert.Equal(1, stacks.Documents.Count); var stacks2 = await _repository.GetByOrganizationIdAsync(TestConstants.OrganizationId, o => o.PageNumber(2).PageLimit(1)); Assert.NotNull(stacks); Assert.Equal(1, stacks.Documents.Count); Assert.NotEqual(stacks.Documents.First().Id, stacks2.Documents.First().Id); stacks = await _repository.GetByOrganizationIdAsync(TestConstants.OrganizationId); Assert.NotNull(stacks); Assert.Equal(3, stacks.Documents.Count); await _repository.RemoveAsync(stacks.Documents); await RefreshDataAsync(); Assert.Equal(0, await _repository.CountAsync()); }
public async Task GetStacksForCleanupAsync() { var openStack10DaysOldWithReference = StackData.GenerateStack(id: TestConstants.StackId3, utcLastOccurrence: SystemClock.UtcNow.SubtractDays(10), status: StackStatus.Open); openStack10DaysOldWithReference.References.Add("test"); await _repository.AddAsync(new List <Stack> { StackData.GenerateStack(id: TestConstants.StackId, utcLastOccurrence: SystemClock.UtcNow.SubtractDays(5), status: StackStatus.Open), StackData.GenerateStack(id: TestConstants.StackId2, utcLastOccurrence: SystemClock.UtcNow.SubtractDays(10), status: StackStatus.Open), openStack10DaysOldWithReference, StackData.GenerateStack(id: TestConstants.StackId4, utcLastOccurrence: SystemClock.UtcNow.SubtractDays(10), status: StackStatus.Fixed) }, o => o.ImmediateConsistency()); var stacks = await _repository.GetStacksForCleanupAsync(TestConstants.OrganizationId, SystemClock.UtcNow.SubtractDays(8)); Assert.NotNull(stacks); Assert.Equal(1, stacks.Total); Assert.Equal(1, stacks.Documents.Count); Assert.Equal(TestConstants.StackId2, stacks.Documents.Single().Id); stacks = await _repository.GetStacksForCleanupAsync(TestConstants.OrganizationId, SystemClock.UtcNow.SubtractDays(1)); Assert.NotNull(stacks); Assert.Equal(2, stacks.Total); Assert.Equal(2, stacks.Documents.Count); Assert.NotNull(stacks.Documents.SingleOrDefault(s => String.Equals(s.Id, TestConstants.StackId))); Assert.NotNull(stacks.Documents.SingleOrDefault(s => String.Equals(s.Id, TestConstants.StackId2))); }
public void CanFindMany() { _repository.RemoveAll(); Assert.Equal(0, _repository.Count()); _repository.Add(StackData.GenerateSampleStacks()); _client.Refresh(); var stacks = _repository.GetByOrganizationId(TestConstants.OrganizationId, new PagingOptions().WithPage(1).WithLimit(1)); Assert.NotNull(stacks); Assert.Equal(1, stacks.Count); var stacks2 = _repository.GetByOrganizationId(TestConstants.OrganizationId, new PagingOptions().WithPage(2).WithLimit(1)); Assert.NotNull(stacks); Assert.Equal(1, stacks.Count); Assert.NotEqual(stacks.First().Id, stacks2.First().Id); stacks = _repository.GetByOrganizationId(TestConstants.OrganizationId); Assert.NotNull(stacks); Assert.Equal(3, stacks.Count); _repository.Remove(stacks); Assert.Equal(0, _repository.Count()); _repository.RemoveAll(); }
public async Task CanFindManyAsync() { Assert.Equal(0, await _repository.CountAsync()); await _repository.AddAsync(StackData.GenerateSampleStacks()); await _configuration.Client.RefreshAsync(); var stacks = await _repository.GetByOrganizationIdAsync(TestConstants.OrganizationId, new PagingOptions().WithPage(1).WithLimit(1)); Assert.NotNull(stacks); Assert.Equal(3, stacks.Total); Assert.Equal(1, stacks.Documents.Count); var stacks2 = await _repository.GetByOrganizationIdAsync(TestConstants.OrganizationId, new PagingOptions().WithPage(2).WithLimit(1)); Assert.NotNull(stacks); Assert.Equal(1, stacks.Documents.Count); Assert.NotEqual(stacks.Documents.First().Id, stacks2.Documents.First().Id); stacks = await _repository.GetByOrganizationIdAsync(TestConstants.OrganizationId); Assert.NotNull(stacks); Assert.Equal(3, stacks.Documents.Count); await _repository.RemoveAsync(stacks.Documents); await _configuration.Client.RefreshAsync(); Assert.Equal(0, await _repository.CountAsync()); }
public async Task WillSetStackDuplicateSignature() { var stack = StackData.GenerateStack(); stack.DuplicateSignature = null; stack = await _repository.AddAsync(stack, o => o.ImmediateConsistency()); Assert.NotEmpty(stack.ProjectId); Assert.NotEmpty(stack.SignatureHash); Assert.Null(stack.DuplicateSignature); var migration = GetService <SetStackDuplicateSignature>(); var context = new MigrationContext(GetService <ILock>(), _logger, CancellationToken.None); await migration.RunAsync(context); string expectedDuplicateSignature = $"{stack.ProjectId}:{stack.SignatureHash}"; var actualStack = await _repository.GetByIdAsync(stack.Id); Assert.NotEmpty(actualStack.ProjectId); Assert.NotEmpty(actualStack.SignatureHash); Assert.Equal($"{actualStack.ProjectId}:{actualStack.SignatureHash}", actualStack.DuplicateSignature); var results = await _repository.FindAsync(q => q.ElasticFilter(Query <Stack> .Term(s => s.DuplicateSignature, expectedDuplicateSignature))); Assert.Single(results.Documents); }
private WebHookDataContext GetWebHookDataContext(Version version) { string json = File.ReadAllText(Path.GetFullPath(Path.Combine("..", "..", "..", "ErrorData", "1477.expected.json"))); var settings = GetService <JsonSerializerSettings>(); settings.Formatting = Formatting.Indented; var ev = JsonConvert.DeserializeObject <PersistentEvent>(json, settings); ev.OrganizationId = TestConstants.OrganizationId; ev.ProjectId = TestConstants.ProjectId; ev.StackId = TestConstants.StackId; ev.Id = TestConstants.EventId; var context = new WebHookDataContext(version, ev, OrganizationData.GenerateSampleOrganization(GetService <BillingManager>(), GetService <BillingPlans>()), ProjectData.GenerateSampleProject()) { Stack = StackData.GenerateStack(id: TestConstants.StackId, organizationId: TestConstants.OrganizationId, projectId: TestConstants.ProjectId, title: _formatter.GetStackTitle(ev), signatureHash: "722e7afd4dca4a3c91f4d94fec89dfdc") }; context.Stack.Tags = new TagSet { "Test" }; context.Stack.FirstOccurrence = context.Stack.LastOccurrence = ev.Date.UtcDateTime; return(context); }
public async Task CanGetByFixedAsync() { var stack = await _repository.AddAsync(StackData.GenerateStack(projectId: TestConstants.ProjectId, organizationId: TestConstants.OrganizationId), o => o.ImmediateConsistency()); var results = await _repository.FindAsync(q => q.FilterExpression("fixed:true")); Assert.NotNull(results); Assert.Equal(0, results.Total); results = await _repository.FindAsync(q => q.FilterExpression("fixed:false")); Assert.NotNull(results); Assert.Equal(1, results.Total); Assert.False(results.Documents.Single().Status == Core.Models.StackStatus.Regressed); Assert.Null(results.Documents.Single().DateFixed); stack.MarkFixed(); await _repository.SaveAsync(stack, o => o.ImmediateConsistency()); results = await _repository.FindAsync(q => q.FilterExpression("fixed:true")); Assert.NotNull(results); Assert.Equal(1, results.Total); Assert.False(results.Documents.Single().Status == Core.Models.StackStatus.Regressed); Assert.NotNull(results.Documents.Single().DateFixed); results = await _repository.FindAsync(q => q.FilterExpression("fixed:false")); Assert.NotNull(results); Assert.Equal(0, results.Total); }
private void EndScope(bool mergeNames) { var sd = _head; foreach (var node in sd.Names) { var classificationName = ClassifyName(node); if (classificationName != null) { AddSpan(node, classificationName); if (mergeNames && sd.Previous != null) { if (classificationName == Classifications.Module) { sd.Previous.Modules.Add(sd.Name + "." + node.Item1); } else if (classificationName == Classifications.Class) { sd.Previous.Types.Add(sd.Name + "." + node.Item1); } else if (classificationName == Classifications.Function) { sd.Previous.Functions.Add(sd.Name + "." + node.Item1); } } } } _head = sd.Previous; }
public async Task CanAddAndGetByCachedAsync() { await ResetAsync(); var cache = IoC.GetInstance <ICacheClient>() as InMemoryCacheClient; Assert.NotNull(cache); await cache.RemoveAllAsync(); var stack = StackData.GenerateSampleStack(); Assert.Equal(0, cache.Count); await _repository.AddAsync(stack, true); Assert.NotNull(stack.Id); Assert.Equal(2, cache.Count); await _client.RefreshAsync(); await cache.RemoveAllAsync(); Assert.Equal(0, cache.Count); Assert.NotNull(await _repository.GetByIdAsync(stack.Id, true)); Assert.Equal(1, cache.Count); await _repository.RemoveAllAsync(); await _client.RefreshAsync(); Assert.Equal(0, cache.Count); }
public async Task CanGetByFixedAsync() { var stack = await _repository.AddAsync(StackData.GenerateStack(id: TestConstants.StackId, projectId: TestConstants.ProjectId, organizationId: TestConstants.OrganizationId)); await RefreshDataAsync(); var results = await _repository.GetByFilterAsync(null, "fixed:true", null, null, DateTime.MinValue, DateTime.MaxValue); Assert.NotNull(results); Assert.Equal(0, results.Total); results = await _repository.GetByFilterAsync(null, "fixed:false", null, null, DateTime.MinValue, DateTime.MaxValue); Assert.NotNull(results); Assert.Equal(1, results.Total); Assert.False(results.Documents.Single().IsRegressed); Assert.Null(results.Documents.Single().DateFixed); stack.MarkFixed(); await _repository.SaveAsync(stack); await RefreshDataAsync(); results = await _repository.GetByFilterAsync(null, "fixed:true", null, null, DateTime.MinValue, DateTime.MaxValue); Assert.NotNull(results); Assert.Equal(1, results.Total); Assert.False(results.Documents.Single().IsRegressed); Assert.NotNull(results.Documents.Single().DateFixed); results = await _repository.GetByFilterAsync(null, "fixed:false", null, null, DateTime.MinValue, DateTime.MaxValue); Assert.NotNull(results); Assert.Equal(0, results.Total); }
protected void CreateData() { var baseDate = DateTime.Now; var occurrenceDateStart = baseDate.AddMinutes(-30); var occurrenceDateMid = baseDate; var occurrenceDateEnd = baseDate.AddMinutes(30); _stackRepository.Add(StackData.GenerateStack(id: TestConstants.StackId, organizationId: TestConstants.OrganizationId, projectId: TestConstants.ProjectId)); var occurrenceDates = new List <DateTime> { occurrenceDateStart, occurrenceDateEnd, baseDate.AddMinutes(-10), baseDate.AddMinutes(-20), occurrenceDateMid, occurrenceDateMid, occurrenceDateMid, baseDate.AddMinutes(20), baseDate.AddMinutes(10), baseDate.AddSeconds(1), occurrenceDateEnd, occurrenceDateStart }; foreach (var date in occurrenceDates) { var ev = _repository.Add(EventData.GenerateEvent(projectId: TestConstants.ProjectId, organizationId: TestConstants.OrganizationId, stackId: TestConstants.StackId, occurrenceDate: date)); _ids.Add(Tuple.Create(ev.Id, date)); } }
/// <summary> /// Runs stack of calls /// </summary> public static void Run() { while (stackForRun.Count > 0) { StackData s = stackForRun.Pop(); s.callback(s.Data); } }
public async Task SendProjectDailySummaryWithAllBlockedAsync() { var user = UserData.GenerateSampleUser(); var project = ProjectData.GenerateSampleProject(); var mostFrequent = StackData.GenerateStacks(3, generateId: true, type: Event.KnownTypes.Error); await _mailer.SendProjectDailySummaryAsync(user, project, mostFrequent, null, SystemClock.UtcNow.Date, true, 123456, 1, 0, 1, 123456, 0, false); await RunMailJobAsync(); }
/// <summary> /// 条件:世界里要有对应物品 /// </summary> /// <param name="targetState"></param> /// <param name="setting"></param> /// <param name="stackData"></param> /// <param name="preconditions"></param> public void GetPreconditions([ReadOnly] ref State targetState, ref State setting, [ReadOnly] ref StackData stackData, ref StateGroup preconditions) { var state = setting; state.Target = Entity.Null; preconditions.Add(state); }
public async Task IncrementUsageConcurrently() { var stack = await _stackRepository.AddAsync(StackData.GenerateStack(id: TestConstants.StackId, projectId: TestConstants.ProjectId, organizationId: TestConstants.OrganizationId)); var stack2 = await _stackRepository.AddAsync(StackData.GenerateStack(id: TestConstants.StackId2, projectId: TestConstants.ProjectId, organizationId: TestConstants.OrganizationId)); DateTime?minOccurrenceDate = null, maxOccurrenceDate = null; var tasks = new List <Task>(); for (int i = 0; i < 10; i++) { tasks.Add(IncrementUsageBatch()); } await Task.WhenAll(tasks); // Assert stack state has no change after increment usage stack = await _stackRepository.GetByIdAsync(TestConstants.StackId); Assert.Equal(0, stack.TotalOccurrences); Assert.True(stack.FirstOccurrence <= SystemClock.UtcNow); Assert.True(stack.LastOccurrence <= SystemClock.UtcNow); // Assert state in cache has been changed after increment usage Assert.Equal(minOccurrenceDate, await _cache.GetUnixTimeMillisecondsAsync(_stackService.GetStackOccurrenceMinDateCacheKey(stack.Id))); Assert.Equal(maxOccurrenceDate, await _cache.GetUnixTimeMillisecondsAsync(_stackService.GetStackOccurrenceMaxDateCacheKey(stack.Id))); Assert.Equal(100, await _cache.GetAsync <long>(_stackService.GetStackOccurrenceCountCacheKey(stack.Id), 0)); stack2 = await _stackRepository.GetByIdAsync(TestConstants.StackId2); Assert.Equal(0, stack2.TotalOccurrences); Assert.True(stack2.FirstOccurrence <= SystemClock.UtcNow); Assert.True(stack2.LastOccurrence <= SystemClock.UtcNow); // Assert state in cache has been changed after increment usage Assert.Equal(minOccurrenceDate, await _cache.GetUnixTimeMillisecondsAsync(_stackService.GetStackOccurrenceMinDateCacheKey(stack2.Id))); Assert.Equal(maxOccurrenceDate, await _cache.GetUnixTimeMillisecondsAsync(_stackService.GetStackOccurrenceMaxDateCacheKey(stack2.Id))); Assert.Equal(200, await _cache.GetAsync <long>(_stackService.GetStackOccurrenceCountCacheKey(stack2.Id), 0)); var occurrenceSet = await _cache.GetListAsync <(string OrganizationId, string ProjectId, string StackId)>(_stackService.GetStackOccurrenceSetCacheKey()); Assert.Equal(2, occurrenceSet.Value.Count); async Task IncrementUsageBatch() { for (int i = 0; i < 10; i++) { var utcNow = SystemClock.UtcNow.Floor(TimeSpan.FromMilliseconds(1)); if (!minOccurrenceDate.HasValue) { minOccurrenceDate = utcNow; } maxOccurrenceDate = utcNow; await _stackService.IncrementStackUsageAsync(TestConstants.OrganizationId, TestConstants.ProjectId, stack.Id, utcNow, utcNow, 1); await _stackService.IncrementStackUsageAsync(TestConstants.OrganizationId, TestConstants.ProjectId, stack2.Id, utcNow, utcNow, 2); } } }
private async Task CreateStacksAndEventsAsync() { var utcNow = SystemClock.UtcNow; await CreateDataAsync(d => { // matches event1.json / stack1.json d.Event() .FreeProject() .Type(Event.KnownTypes.Log) .Level("Error") .Source("GET /Print") .DateFixed() .TotalOccurrences(5) .StackReference("http://exceptionless.io") .FirstOccurrence(utcNow.SubtractDays(1)) .Tag("test", "Critical") .Geo("40,-70") .Value(1.0M) .RequestInfoSample() .UserIdentity("My-User-Identity", "test user") .UserDescription("*****@*****.**", "my custom description") .Version("1.2.3.0") .ReferenceId("876554321"); // matches event2.json / stack2.json var stack2 = d.Event() .FreeProject() .Type(Event.KnownTypes.Error) .Status(StackStatus.Regressed) .TotalOccurrences(50) .FirstOccurrence(utcNow.SubtractDays(2)) .StackReference("https://github.com/exceptionless/Exceptionless") .Tag("Blake Niemyjski") .RequestInfoSample() .UserIdentity("*****@*****.**") .Version("3.2.1-beta1"); // matches event3.json and using the same stack as the previous event d.Event() .FreeProject() .Type(Event.KnownTypes.Error) .Stack(stack2) .Tag("Blake Niemyjski") .RequestInfoSample() .UserIdentity("example", "Blake") .Version("4.0.1039 6f929bbe18"); // defaults everything d.Event().FreeProject(); }); Log.MinimumLevel = LogLevel.Warning; await StackData.CreateSearchDataAsync(GetService <IStackRepository>(), GetService <JsonSerializer>(), true); await EventData.CreateSearchDataAsync(GetService <ExceptionlessElasticConfiguration>(), _eventRepository, GetService <EventParserPluginManager>(), true); Log.MinimumLevel = LogLevel.Trace; }
private void GenerateHtmlFlair(StackData stackData, StackFlairOptions flairOptions) { ITemplate template = GetTemplate(flairOptions, stackData); string flair = template.GenerateHtml(); Response.Clear(); Response.Write(flair); Response.End(); }
public void GetPreconditions(ref State targetState, ref State setting, ref StackData stackData, ref StateGroup preconditions) { //我自己需要有指定的物品 var state = setting; state.Target = stackData.AgentEntity; preconditions.Add(state); }
public async Task SendProjectDailySummaryWithFreeProjectAsync() { var user = UserData.GenerateSampleUser(); var project = ProjectData.GenerateSampleProject(); var mostFrequent = StackData.GenerateStacks(3, generateId: true, type: Event.KnownTypes.Error); var newest = StackData.GenerateStacks(1, generateId: true, type: Event.KnownTypes.Error); await _mailer.SendProjectDailySummaryAsync(user, project, mostFrequent, newest, SystemClock.UtcNow.Date, true, 12, 1, 1, 2, 0, 0, true); await RunMailJobAsync(); }
public StackData(string name, StackData previous) { Name = name; Previous = previous; Parameters = new HashSet<string>(); Functions = new HashSet<string>(); Types = new HashSet<string>(); Modules = new HashSet<string>(); Names = new List<Tuple<string, Span>>(); }
private void GenerateImageFlair(StackData stackData, StackFlairOptions flairOptions) { ITemplate template = GetTemplate(flairOptions, stackData); Image flair = template.GenerateImage(); Response.Clear(); Response.ContentType = "image/" + flairOptions.Format.ToString().ToLower(); var cache = Response.Cache; cache.SetValidUntilExpires(true); cache.SetCacheability(HttpCacheability.Public); cache.SetExpires(DateTime.Now.AddHours(int.Parse(cfg.AppSettings["FlairDuration"]) / 2)); var ms = new MemoryStream(); flair.Save(ms, Utility.ImageFormats[flairOptions.Format]); ms.WriteTo(Response.OutputStream); ms.Dispose(); flair.Dispose(); Response.End(); }
public static StackData GetFlairData(Guid associationId) { var stackAuthClient = new StackAuthClient(new UrlClient(), new JsonProtocol()); var associatedUsers = stackAuthClient.GetAssociatedUsers(associationId); associatedUsers = associatedUsers.OrderByDescending(au => au.Reputation).Where(au => au.Site.State != SiteState.Linked_Meta); int totalRep = associatedUsers.Sum(ai => ai.Reputation); string html = ""; AssociatedUser topUser = associatedUsers.First(); StackData data = new StackData() { DisplayHash = topUser.EmailHash, DisplayId = topUser.Id, DisplayName = topUser.DisplayName, DisplayUrl = topUser.Site.SiteUrl, Sites = (from u in associatedUsers select new StackSiteData() { SiteName = u.Site.Name, SiteState = u.Site.State, Reputation = u.Reputation, Url = u.Site.SiteUrl, UserId = u.Id, IsMod = u.Type == UserType.Moderator, Badges = Utility.GetBadgeCounts(u.Site, u.Id) }).ToList(), //TotalBadges = GetBadgeCounts(associatedUsers), }; return data; }
public DefaultTemplate(StackData data, StackFlairOptions flairOptions) : base(data, flairOptions) { TemplateOptions = new TemplateOptions() { GravatarSize = 48, Spacing = 5, NameColor = Color.FromArgb(119, 119, 204), BackgroundColor = Color.FromArgb(221, 221, 221), GoldColor = Color.FromArgb(221, 153, 34), SilverColor = Color.FromArgb(119, 119, 119), BronzeColor = Color.FromArgb(205, 127, 50), BorderWidth = 1, BorderColor = Color.FromArgb(136, 136, 136), ModColor = Color.FromArgb(51, 51, 51), TopLineSize = 10, MiddleLineSize = 9, RepColor = Color.FromArgb(51, 51, 51), FontFamily = "Helvetica" }; }
public BlackTemplate(StackData data, StackFlairOptions flairOptions) : base(data, flairOptions) { TemplateOptions = new TemplateOptions() { GravatarSize = 48, Spacing = 5, BorderColor = Color.Black, BackgroundColor = Color.FromArgb(34, 34, 34), BorderWidth = 1, GoldColor = Color.FromArgb(255, 204, 0), SilverColor = Color.FromArgb(119, 119, 119), BronzeColor = Color.FromArgb(205, 127, 50), FontFamily = "Helvetica", TopLineSize = 10, MiddleLineSize = 9, ModColor = Color.White, NameColor = Color.White, RepColor = Color.White }; }
public static StackData LoadFromXml(XmlNode node) { if (null == node) return null; StackData sData = new StackData(); sData.m_strModule = XmlLoaderBase.getInnerTextByPath(node, "./frame/module"); sData.m_strAddress = XmlLoaderBase.getInnerTextByPath(node, "./frame/address"); sData.m_strFuncName = XmlLoaderBase.getInnerTextByPath(node, "./frame/function/name"); sData.m_strFuncOffset = XmlLoaderBase.getInnerTextByPath(node, "./frame/function/offset"); sData.m_strFile = XmlLoaderBase.getInnerTextByPath(node, "./frame/file"); sData.m_strLineNum = XmlLoaderBase.getInnerTextByPath(node, "./frame/line/number"); sData.m_nLineNum = (null == sData.m_strLineNum || sData.m_strLineNum.Length == 0) ? 0 : Convert.ToInt32(sData.m_strLineNum); sData.m_strLineOffset = XmlLoaderBase.getInnerTextByPath(node, "./frame/line/offset"); if (null == sData.m_strAddress || "" == sData.m_strAddress) return null; int nTmpNum = sData.m_strAddress.IndexOf(':'); if (0 > nTmpNum) return null; sData.m_nAddrOffset = Convert.ToInt32(sData.m_strAddress.Substring(0, nTmpNum), 16); sData.m_nAddrAddress = Convert.ToInt32(sData.m_strAddress.Substring(nTmpNum + 1, sData.m_strAddress.Length - nTmpNum - 1), 16); return sData; }
public NimbusTemplate(StackData data, StackFlairOptions flairOptions) : base(data, flairOptions) { TemplateOptions = new TemplateOptions() { GravatarSize = 48, Spacing = 5, BorderColor = Color.FromArgb(181, 190, 189), BackgroundColor = Color.FromArgb(214, 223, 222), BorderWidth = 1, BronzeColor = Color.FromArgb(214, 113, 16), FontFamily = "Helvetica", GoldColor = Color.FromArgb(221, 153, 34), MiddleLineSize = 9, ModColor = Color.FromArgb(74, 56, 66), NameColor = Color.FromArgb(74, 56, 66), RepColor = Color.FromArgb(74, 56, 66), SilverColor = Color.FromArgb(119, 119, 119), TopLineSize = 10 }; }
void restore_stack(StackData stack) { if (inferior.CurrentFrame != stack.Address) { Report.Debug (DebugFlags.SSE, "{0} discarding saved stack: stopped " + "at {1}, but recorded {2}", this, inferior.CurrentFrame, stack.Frame.TargetAddress); frame_changed (inferior.CurrentFrame, null); return; } current_method = stack.Method; current_frame = stack.Frame; current_backtrace = stack.Backtrace; registers = stack.Registers; }
StackData save_stack(long id) { // // Save current state. // StackData stack_data = new StackData ( id, current_method, inferior.CurrentFrame, current_frame, current_backtrace, registers); current_method = null; current_frame = null; current_backtrace = null; registers = null; return stack_data; }
public HoLyTemplate(StackData data, StackFlairOptions flairOptions) : base(data, flairOptions) { TemplateOptions = new TemplateOptions() { GravatarSize = 48, Spacing = 5, BorderColor = Color.Black, BackgroundColor = Color.FromArgb(222, 150, 16), BorderWidth = 1, BronzeColor = Color.FromArgb(77, 68, 0), FontFamily = "Helvetica", GoldColor = Color.FromArgb(255, 204, 0), MiddleLineSize = 9, ModColor = Color.FromArgb(222, 81, 0), NameColor = Color.FromArgb(82, 81, 181), RepColor = Color.FromArgb(222, 81, 0), SilverColor = Color.FromArgb(119, 119, 119), TopLineSize = 10 }; }
protected void DiscardStack() { stack_data = null; }
public HotDogTemplate(StackData data, StackFlairOptions flairOptions) : base(data, flairOptions) { TemplateOptions = new TemplateOptions() { GravatarSize = 48, Spacing = 5, BorderColor = Color.Black, BackgroundColor = Color.Red, BorderWidth = 1, BronzeColor = Color.FromArgb(77, 68, 0), FontFamily = "Helvetica", GoldColor = Color.FromArgb(255, 204, 0), MiddleLineSize = 9, ModColor = Color.Yellow, NameColor = Color.Yellow, RepColor = Color.Yellow, SilverColor = Color.FromArgb(198, 198, 198), TopLineSize = 10 }; }
private ITemplate GetTemplate(StackFlairOptions flairOptions, StackData stackData) { ITemplate template = null; switch (flairOptions.Theme.ToLower()) { /*case "glitter": template = new GlitterTemplate(stackData, flairOptions); break;*/ case "black": template = new BlackTemplate(stackData, flairOptions); break; case "hotdog": template = new HotDogTemplate(stackData, flairOptions); break; case "holy": template = new HoLyTemplate(stackData, flairOptions); break; case "nimbus": template = new NimbusTemplate(stackData, flairOptions); break; default: template = new DefaultTemplate(stackData, flairOptions); break; } return template; }
public override void Execute() { stack_data = sse.save_stack (ID); try { base.Execute (); } catch { RestoreStack (); throw; } }
protected void AbortOperation() { stack_data = null; }
public override bool Walk(PythonAst node) { Debug.Assert(_head == null); _head = new StackData(string.Empty, null); return base.Walk(node); }
private void EndScope(bool mergeNames) { var sd = _head; foreach (var node in sd.Names) { var classificationName = ClassifyName(node); if (classificationName != null) { AddSpan(node, classificationName); if (mergeNames && sd.Previous != null) { if (classificationName == PythonPredefinedClassificationTypeNames.Module) { sd.Previous.Modules.Add(sd.Name + "." + node.Item1); } else if (classificationName == PythonPredefinedClassificationTypeNames.Class) { sd.Previous.Types.Add(sd.Name + "." + node.Item1); } else if (classificationName == PythonPredefinedClassificationTypeNames.Function) { sd.Previous.Functions.Add(sd.Name + "." + node.Item1); } } } } _head = sd.Previous; }
private void BeginScope(string name = null) { if (_head != null) { if (name == null) { name = _head.Name; } else if (_head.Name != null) { name = _head.Name + "." + name; } } _head = new StackData(name, _head); }
protected Template(StackData data, StackFlairOptions flairOptions) { FlairOptions = flairOptions; Data = data; if (FlairOptions.NoBeta) { Data.Sites = Data.Sites.Where(s => s.SiteState == SiteState.Normal).ToList(); } if (!String.IsNullOrEmpty(FlairOptions.Only)) { Data.Sites = new List<StackSiteData>() { Data.Sites.Single(s => s.SiteName.Replace(" ", "").Equals(FlairOptions.Only, StringComparison.InvariantCultureIgnoreCase)) }; } }
protected void RestoreStack() { if (stack_data != null) sse.restore_stack (stack_data); stack_data = null; }