TestOutputTopic{K, V} is used to read records from a topic in TopologyTestDriver and it's NOT THREADSAFE. To use TestOutputTopic{K, V} create a new instance via TopologyTestDriver.CreateOuputTopic{K, V}(string). In actual test code, you can read record values, keys, keyvalue or list of keyvalue. If you have multiple source topics, you need to create a TestOutputTopic{K, V} for each. Processing records var outputTopic = builder.CreateOuputTopic<string, string>("test-output", TimeSpan.FromSeconds(5)); var kv = outputTopic.ReadKeyValue(); DO ASSERT HERE
示例#1
0
        /// <summary>
        /// Read output to map.
        /// This method can be used if the result is considered a table, when you are only interested in the last table update (ie, the final table state).
        ///
        /// </summary>
        /// <typeparam name="K">key type</typeparam>
        /// <typeparam name="V">value type</typeparam>
        /// <param name="outputTopic">output topic</param>
        /// <returns>Map of output topic by key.</returns>
        public static Dictionary <K, V> ReadKeyValuesToMap <K, V>(this TestOutputTopic <K, V> outputTopic)
        {
            Dictionary <K, V> map = new Dictionary <K, V>();

            var result = outputTopic.ReadKeyValueList();

            foreach (var r in result)
            {
                if (map.ContainsKey(r.Message.Key))
                {
                    map[r.Message.Key] = r.Message.Value;
                }
                else
                {
                    map.Add(r.Message.Key, r.Message.Value);
                }
            }

            return(map);
        }
示例#2
0
        /// <summary>
        /// Wait until <paramref name="size"/> messages in topic. This methods use 10 seconds of timeout.
        /// </summary>
        /// <typeparam name="K">key type</typeparam>
        /// <typeparam name="V">value type</typeparam>
        /// <param name="topic">output topic</param>
        /// <param name="size">number of message waiting</param>
        /// <returns>Return a list of records</returns>
        public static List <ConsumeResult <K, V> > WaitUntilMinKeyValueRecordsReceived <K, V>(TestOutputTopic <K, V> topic, int size)
        {
            DateTime dt = DateTime.Now;
            TimeSpan ts = TimeSpan.FromSeconds(10);

            List <ConsumeResult <K, V> > results = new List <ConsumeResult <K, V> >();

            do
            {
                results.AddRange(topic.ReadKeyValueList().ToList());
                if (dt + ts < DateTime.Now)
                {
                    break;
                }
            } while (results.Count < size);

            return(results);
        }
示例#3
0
        /// <summary>
        /// Wait until <paramref name="size"/> messages in topic
        /// </summary>
        /// <typeparam name="K">key type</typeparam>
        /// <typeparam name="V">value type</typeparam>
        /// <param name="topic">output topic</param>
        /// <param name="size">number of message waiting</param>
        /// <returns>Return a list of records</returns>
        public static List <ConsumeResult <K, V> > WaitUntilMinKeyValueRecordsReceived <K, V>(TestOutputTopic <K, V> topic, int size)
        {
            List <ConsumeResult <K, V> > results = new List <ConsumeResult <K, V> >();

            do
            {
                results.AddRange(topic.ReadKeyValueList().ToList());
            } while (results.Count < size);

            return(results);
        }