Пример #1
0
        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);
        }
Пример #2
0
        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();
        }
Пример #3
0
    void Awake()
    {
        StackData data = new StackData();

        data.current = new SceneStage(SceneManager.GetActiveScene().name);
        sdatas.Push(data);
    }
Пример #4
0
        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);
Пример #5
0
        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);
        }
Пример #7
0
 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;
 }
Пример #8
0
        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);
        }
Пример #9
0
    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);
    }
Пример #10
0
    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());
        }
Пример #13
0
    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();
        }
Пример #15
0
        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());
        }
Пример #16
0
        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);
        }
Пример #17
0
        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);
        }
Пример #18
0
    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);
    }
Пример #19
0
        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));
            }
        }
Пример #23
0
 /// <summary>
 /// Runs stack of calls
 /// </summary>
 public static void Run()
 {
     while (stackForRun.Count > 0)
     {
         StackData s = stackForRun.Pop();
         s.callback(s.Data);
     }
 }
Пример #24
0
        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();
        }
Пример #25
0
        /// <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);
        }
Пример #26
0
        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);
                }
            }
        }
Пример #27
0
        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;
        }
Пример #28
0
        private void GenerateHtmlFlair(StackData stackData, StackFlairOptions flairOptions)
        {
            ITemplate template = GetTemplate(flairOptions, stackData);
            string flair = template.GenerateHtml();

            Response.Clear();
            Response.Write(flair);
            Response.End();
        }
Пример #29
0
        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);
        }
Пример #30
0
        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();
        }
Пример #31
0
        private void GenerateHtmlFlair(StackData stackData, StackFlairOptions flairOptions)
        {
            ITemplate template = GetTemplate(flairOptions, stackData);
            string    flair    = template.GenerateHtml();

            Response.Clear();
            Response.Write(flair);
            Response.End();
        }
Пример #32
0
 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>>();
 }
Пример #33
0
        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();
        }
Пример #34
0
    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;
    }
Пример #35
0
 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"
     };
 }
Пример #36
0
 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
     };
 }
Пример #37
0
 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;
 }
Пример #38
0
 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
     };
 }
Пример #39
0
        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;
        }
Пример #40
0
        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;
        }
Пример #41
0
 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
     };
 }
Пример #42
0
 protected void DiscardStack()
 {
     stack_data = null;
 }
Пример #43
0
 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
     };
 }
Пример #44
0
 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;
 }
Пример #45
0
 public override void Execute()
 {
     stack_data = sse.save_stack (ID);
     try {
     base.Execute ();
     } catch {
     RestoreStack ();
     throw;
     }
 }
Пример #46
0
 protected void AbortOperation()
 {
     stack_data = null;
 }
Пример #47
0
 public override bool Walk(PythonAst node) {
     Debug.Assert(_head == null);
     _head = new StackData(string.Empty, null);
     return base.Walk(node);
 }
Пример #48
0
 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;
 }
Пример #49
0
 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);
 }
Пример #50
0
 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)) };
     }
 }
Пример #51
0
 protected void RestoreStack()
 {
     if (stack_data != null)
     sse.restore_stack (stack_data);
     stack_data = null;
 }