public void Converter_CheckIsMethodRegistered_ShouldPass() { var request = new ConvertionRequest <ConverterTests>( "repeat every 5 seconds where TestA(@current) and TestB(@current) start at '06.06.2016 14:00:00'", TimeZoneInfo.Local, TimeZoneInfo.Local, false, null); var timeline = new RdlTimeline <ConverterTests>(false); var response = timeline.Convert(request); response.Output.NextFire(); Assert.IsTrue(_testACalled); Assert.IsTrue(_testBCalled); }
private void TestMethods <TMethods>(string query, string fireTime) where TMethods : new() { var request = new ConvertionRequest <TMethods>(query, TimeZoneInfo.Local, TimeZoneInfo.Local, false, new[] { "dd.M.yyyy", "dd.M.yyyy hh:mm:ss" }); var timeline = new RdlTimeline <TMethods>(false); var response = timeline.Convert(request); Assert.IsNotNull(response.Output); var fireAt = response.Output.NextFire(); Assert.AreEqual(DateTimeOffset.Parse(fireTime), fireAt.Value); }
public static ConvertionResponse <IFireTimeEvaluator> Convert <TMethodsAggregator>(string query, TimeZoneInfo source, TimeZoneInfo destination, CancellationToken cancellationToken = default(CancellationToken)) where TMethodsAggregator : new() { var request = new ConvertionRequest <TMethodsAggregator>(query, source, destination, false, new[] { "dd/M/yyyy H:m:s", "dd/M/yyyy h:m:s tt", "dd.M.yyyy H:m:s", "dd.M.yyyy h:m:s tt", "yyyy-mm.dd HH:mm:ss", "yyyy/mm/dd H:m:s", "dd.M.yyyy" }, cancellationToken); var timeline = new RdlTimeline <TMethodsAggregator>(false); var response = timeline.Convert(request); return(response); }
static void Main(string[] args) { args = new[] { @" repeat every minutes where 1 = (case when GetWeekOfMonth() in (1,3) and GetDayOfWeek() = monday then GetTime() between Time(8, 30, 0) and Time(11, 30, 0) when GetWeekOfMonth() in (2,4) and GetDayOfWeek() in (tuesday, sunday) then GetTime() = Time(12, 0, 0) else 0 esac) start at '01.04.2017' stop at '30.04.2019'" }; Console.WriteLine($@"Timer started at: {DateTimeOffset.UtcNow}"); Stopwatch queryTimer = new Stopwatch(); queryTimer.Start(); var converter = new RdlTimeline <DefaultMethodsAggregator>(); var response = converter.Convert(new ConvertionRequest <DefaultMethodsAggregator>(args[0], TimeZoneInfo.Local, TimeZoneInfo.Local)); var evaluator = response.Output; var lastElapsed = queryTimer.ElapsedMilliseconds; while (evaluator.NextFire() != null) { if (queryTimer.ElapsedMilliseconds - lastElapsed > 1000) { Console.WriteLine($@"Timer started at: {DateTimeOffset.UtcNow}"); lastElapsed = queryTimer.ElapsedMilliseconds; } } queryTimer.Stop(); Console.WriteLine($@"Timer stopped: {queryTimer.Elapsed}"); }