Beispiel #1
0
        public void StoresPersistentKeyValueStoreTest()
        {
            var builder = new StreamBuilder();

            // Same like that :
            // builder.Table("table-topic", RocksDb<string, string>.As("table-topic-store"));
            builder.Table("table-topic",
                          Materialized <string, string, IKeyValueStore <Bytes, byte[]> > .Create(
                              Streamiz.Kafka.Net.State.Stores.PersistentKeyValueStore("table-topic-store")));

            var config = new StreamConfig <StringSerDes, StringSerDes>();

            config.ApplicationId = "test-map";
            config.UseRandomRocksDbConfigForTest();

            Topology t = builder.Build();

            using (var driver = new TopologyTestDriver(t, config))
            {
                var inputTopic = driver.CreateInputTopic <string, string>("table-topic");
                inputTopic.PipeInput("key1", "1");
                inputTopic.PipeInput("key2", "2");

                var store = driver.GetKeyValueStore <string, string>("table-topic-store");
                Assert.IsNotNull(store);
                var resultK1 = store.Get("key1");
                var resultK2 = store.Get("key2");

                Assert.AreEqual("1", resultK1);
                Assert.AreEqual("2", resultK2);
            }
            config.RemoveRocksDbFolderForTest();
        }
Beispiel #2
0
        public void KTableSource()
        {
            var builder = new StreamBuilder();

            builder.Table("table-topic", RocksDb <string, string> .As <StringSerDes, StringSerDes>("table-topic-store"));

            var config = new StreamConfig <StringSerDes, StringSerDes>();

            config.ApplicationId = "test-map";
            config.UseRandomRocksDbConfigForTest();

            Topology t = builder.Build();

            using (var driver = new TopologyTestDriver(t, config))
            {
                var inputTopic = driver.CreateInputTopic <string, string>("table-topic");
                inputTopic.PipeInput("key1", "1");
                inputTopic.PipeInput("key2", "2");

                var store = driver.GetKeyValueStore <string, string>("table-topic-store");
                Assert.IsNotNull(store);
                var resultK1 = store.Get("key1");
                var resultK2 = store.Get("key2");

                Assert.AreEqual("1", resultK1);
                Assert.AreEqual("2", resultK2);
            }
            config.RemoveRocksDbFolderForTest();
        }
Beispiel #3
0
        public void Windowing()
        {
            var builder = new StreamBuilder();

            builder.Stream <string, string>("topic")
            .GroupByKey()
            .WindowedBy(TumblingWindowOptions.Of(1000))
            .Count(RocksDbWindows <string, long> .As <StringSerDes, Int64SerDes>("rocksdb-w-store"));

            var config = new StreamConfig <StringSerDes, StringSerDes>();

            config.ApplicationId = "test-rocksdb-window-store";
            config.UseRandomRocksDbConfigForTest();

            Topology t = builder.Build();

            using (var driver = new TopologyTestDriver(t, config))
            {
                DateTime dt         = DateTime.Now;
                var      inputTopic = driver.CreateInputTopic <string, string>("topic");
                inputTopic.PipeInput("key1", "1", dt);
                inputTopic.PipeInput("key2", "2", dt);

                var store = driver.GetWindowStore <string, long>("rocksdb-w-store");
                Assert.IsNotNull(store);
                var k1 = store.FetchAll(dt.AddMinutes(-10), dt.AddMinutes(10)).ToList();

                Assert.AreEqual(2, k1.Count);
                Assert.AreEqual(1L, k1[0].Value);
                Assert.AreEqual(1L, k1[1].Value);
            }
            config.RemoveRocksDbFolderForTest();
        }
Beispiel #4
0
 public void End()
 {
     if (store != null)
     {
         store.Flush();
         stateManager.Close();
     }
     config.RemoveRocksDbFolderForTest();
 }
        public void GlobalTableWithStoreQueryableWithRocksDb()
        {
            var builder = new StreamBuilder();

            var table  = builder.GlobalTable("topic", RocksDb <string, string> .As("global-store"));
            var config = new StreamConfig <StringSerDes, StringSerDes>();

            config.ApplicationId = "test-globaltable";
            config.UseRandomRocksDbConfigForTest();

            Topology t = builder.Build();

            using (var driver = new TopologyTestDriver(t, config))
            {
                var inputTopic = driver.CreateInputTopic <string, string>("topic");
                inputTopic.PipeInput("test", "coucou");
                var store = driver.GetKeyValueStore <string, string>("global-store");
                var ele   = store.Get("test");
                Assert.IsNotNull(ele);
                Assert.AreEqual("coucou", ele);
            }
            config.RemoveRocksDbFolderForTest();
        }
Beispiel #6
0
        public void StoresPersistentKeyValueStoreTest()
        {
            var builder = new StreamBuilder();

            builder.Stream <string, string>("topic")
            .GroupByKey()
            .WindowedBy(TumblingWindowOptions.Of(1000))
            .Count(
                Materialized <string, long, IWindowStore <Bytes, byte[]> > .Create(
                    Streamiz.Kafka.Net.State.Stores.PersistentWindowStore(
                        "rocksdb-w-store",
                        TimeSpan.FromDays(1),
                        TimeSpan.FromSeconds(1))));

            var config = new StreamConfig <StringSerDes, StringSerDes>();

            config.ApplicationId = "test-rocksdb-window-store";
            config.UseRandomRocksDbConfigForTest();

            Topology t = builder.Build();

            using (var driver = new TopologyTestDriver(t, config))
            {
                DateTime dt         = DateTime.Now;
                var      inputTopic = driver.CreateInputTopic <string, string>("topic");
                inputTopic.PipeInput("abc", "1", dt);
                inputTopic.PipeInput("key1", "1", dt);
                inputTopic.PipeInput("test", "1", dt);

                var store = driver.GetWindowStore <string, long>("rocksdb-w-store");
                Assert.IsNotNull(store);
                var k1 = store.FetchAll(dt.AddMinutes(-10), dt.AddMinutes(10)).ToList();

                Assert.AreEqual(3, k1.Count);
            }
            config.RemoveRocksDbFolderForTest();
        }