Ejemplo n.º 1
0
        public void QueriesFromSameCreateStreamSetShouldNotAffectEachOther()
        {
            //Arrange
            var context = new TransactionsDbProvider(TestParameters.KsqlDBUrl);

            var grouping1 = context.CreateQueryStream <Transaction>("authorization_attempts_1")
                            .GroupBy(c => c.CardNumber)
                            .Select(g => new { CardNumber = g.Key, Count = g.Count() });

            var grouping2 = context.CreateQueryStream <Transaction>("authorization_attempts_2")
                            .GroupBy(c => c.CardNumber)
                            .Select(g => new { CardNumber = g.Key, Count = g.Count() });

            var take = grouping2.Take(2);

            //Act
            var ksql1    = grouping1.ToQueryString();
            var ksql2    = grouping2.ToQueryString();
            var ksqlTake = take.ToQueryString();

            //Assert
            ksql1.Should().BeEquivalentTo("SELECT CardNumber, COUNT(*) Count FROM authorization_attempts_1 GROUP BY CardNumber EMIT CHANGES;");
            ksql2.Should().BeEquivalentTo("SELECT CardNumber, COUNT(*) Count FROM authorization_attempts_2 GROUP BY CardNumber EMIT CHANGES;");
            ksqlTake.Should().BeEquivalentTo("SELECT CardNumber, COUNT(*) Count FROM authorization_attempts_2 GROUP BY CardNumber EMIT CHANGES LIMIT 2;");
        }
Ejemplo n.º 2
0
        public void AdvanceByIsBiggerThenWindowSize_BuildKSql_Throws()
        {
            //Arrange
            var context = new TransactionsDbProvider(TestParameters.KsqlDBUrl);

            var grouping = context.CreateQueryStream <Transaction>()
                           .GroupBy(c => c.CardNumber)
                           .WindowedBy(new HoppingWindows(Duration.OfSeconds(5)).WithAdvanceBy(Duration.OfSeconds(7)))
                           .Select(g => new { CardNumber = g.Key, Count = g.Count() });

            //Act

            //Assert
        }
Ejemplo n.º 3
0
        public void GroupByAndCount_BuildKSql_PrintsQueryWithHoppingWindowRetention()
        {
            //Arrange
            var context = new TransactionsDbProvider(TestParameters.KsqlDBUrl);

            var grouping = context.CreateQueryStream <Transaction>()
                           .GroupBy(c => c.CardNumber)
                           .WindowedBy(new HoppingWindows(Duration.OfSeconds(5)).WithRetention(Duration.OfDays(7)))
                           .Select(g => new { CardNumber = g.Key, Count = g.Count() });

            //Act
            var ksql = grouping.ToQueryString();

            //Assert
            ksql.Should().BeEquivalentTo("SELECT CardNumber, COUNT(*) Count FROM Transactions WINDOW HOPPING (SIZE 5 SECONDS, ADVANCE BY 5 SECONDS, RETENTION 7 DAYS) GROUP BY CardNumber EMIT CHANGES;");
        }
Ejemplo n.º 4
0
        public void GroupByAndCount_BuildKSql_PrintsQueryWithWindowSession()
        {
            //Arrange
            var context = new TransactionsDbProvider(TestParameters.KsqlDBUrl);

            var grouping = context.CreateQueryStream <Transaction>()
                           .GroupBy(c => c.CardNumber)
                           .WindowedBy(new SessionWindow(Duration.OfSeconds(5)))
                           .Select(g => new { CardNumber = g.Key, Count = g.Count() });

            //Act
            var ksql = grouping.ToQueryString();

            //Assert
            ksql.Should().BeEquivalentTo("SELECT CardNumber, COUNT(*) Count FROM Transactions WINDOW SESSION (5 SECONDS) GROUP BY CardNumber EMIT CHANGES;");
        }
Ejemplo n.º 5
0
        public void GroupByAndCount_BuildKSql_PrintsQueryWithTumblingWindowAndGracePeriod()
        {
            //Arrange
            var context = new TransactionsDbProvider(TestParameters.KsqlDBUrl);

            var grouping = context.CreateQueryStream <Transaction>()
                           .GroupBy(c => c.CardNumber)
                           .WindowedBy(new TimeWindows(Duration.OfSeconds(5)).WithGracePeriod(Duration.OfHours(2)))
                           .Select(g => new { CardNumber = g.Key, Count = g.Count() });

            //Act
            var ksql = grouping.ToQueryString();

            //Assert
            ksql.Should().BeEquivalentTo("SELECT CardNumber, COUNT(*) Count FROM Transactions WINDOW TUMBLING (SIZE 5 SECONDS, GRACE PERIOD 2 HOURS) GROUP BY CardNumber EMIT CHANGES;");
        }