Exemple #1
0
        public void TestDStreamMapWithStateUpdateStateHelper()
        {
            var ticks  = DateTime.UtcNow.Ticks;
            var helper = new UpdateStateHelper <string, int, int, int>(
                (k, v, state) =>
            {
                if (v < 0 && state.Exists())
                {
                    state.Remove();
                }
                else if (!state.IsTimingOut())
                {
                    state.Update(v + state.Get());
                }

                return(v);
            },
                ticks, true, TimeSpan.FromSeconds(10));

            var input = new dynamic[4];

            var preStateRddRecord = new MapWithStateRDDRecord <string, int, int>(ticks - TimeSpan.FromSeconds(2).Ticks, new [] { new KeyValuePair <string, int>("1", 1), new KeyValuePair <string, int>("2", 2) });

            preStateRddRecord.stateMap.Add("expired", new KeyedState <int>(0, ticks - TimeSpan.FromSeconds(60).Ticks));

            input[0] = preStateRddRecord;
            input[1] = new KeyValuePair <string, int>("1", -1);
            input[2] = new KeyValuePair <string, int>("2", 2);
            input[3] = new KeyValuePair <string, int>("3", 3);

            var result = helper.Execute(1, input).GetEnumerator();

            Assert.IsNotNull(result);
            Assert.IsTrue(result.MoveNext());

            MapWithStateRDDRecord <string, int, int> stateRddRecord = result.Current;

            Assert.IsNotNull(stateRddRecord);
            Assert.AreEqual(stateRddRecord.mappedData.Count, 4); // timedout record also appears in return results
            Assert.AreEqual(stateRddRecord.stateMap.Count, 2);
        }
Exemple #2
0
        public void TestDStreamMapWithStateUpdateStateHelper()
        {
            var ticks = DateTime.UtcNow.Ticks;
            var helper = new UpdateStateHelper<string, int, int, int>(
                (k, v, state) =>
                {
                    if (v < 0 && state.Exists())
                    {
                        state.Remove();
                    }
                    else if(!state.IsTimingOut())
                    {
                        state.Update(v + state.Get());
                    }
                    
                    return v;
                },
                ticks, true, TimeSpan.FromSeconds(10));

            var input = new dynamic[4];

            var preStateRddRecord = new MapWithStateRDDRecord<string, int, int>(ticks - TimeSpan.FromSeconds(2).Ticks, new [] { new KeyValuePair<string, int>("1", 1), new KeyValuePair<string, int>("2", 2)});
            preStateRddRecord.stateMap.Add("expired", new KeyedState<int>(0, ticks - TimeSpan.FromSeconds(60).Ticks));

            input[0] = preStateRddRecord;
            input[1] = new KeyValuePair<string, int>("1", -1);
            input[2] = new KeyValuePair<string, int>("2", 2);
            input[3] = new KeyValuePair<string, int>("3", 3);

            var result = helper.Execute(1, input).GetEnumerator();
            Assert.IsNotNull(result);
            Assert.IsTrue(result.MoveNext());

            MapWithStateRDDRecord<string, int, int> stateRddRecord = result.Current;

            Assert.IsNotNull(stateRddRecord);
            Assert.AreEqual(stateRddRecord.mappedData.Count, 4); // timedout record also appears in return results
            Assert.AreEqual(stateRddRecord.stateMap.Count, 2);
        }