public void Request_Post_Elapsed() { var access_token = Guid.NewGuid().ToString(); var mem = InMemoryRuleState.GetInstance; var rule = new RequestElapsedTime(mem, TimeSpan.FromSeconds(1)); var rslt = rule.Execute(new RequestInfo { Access_Token = access_token }); Assert.IsFalse(rslt); var store_time = mem.Retrieve <DateTime>($"{access_token}{Constants.AppendKeyPrevReqTime}"); Assert.IsTrue(store_time.Item2); Thread.Sleep(2000); rslt = rule.Execute(new RequestInfo { Access_Token = access_token }); Assert.IsFalse(rslt); var newtime = mem.Retrieve <DateTime>($"{access_token}{Constants.AppendKeyPrevReqTime}"); var diff = newtime.Item1.Subtract(store_time.Item1); Assert.IsTrue(diff.TotalMilliseconds > 0); }
public void Second_Request_InsideElapsed() { var access_token = Guid.NewGuid().ToString(); var mem = InMemoryRuleState.GetInstance; var rule = new RequestElapsedTime(mem, TimeSpan.FromSeconds(10)); var rslt = rule.Execute(new RequestInfo { Access_Token = access_token }); Assert.IsFalse(rslt); var store_time = mem.Retrieve <DateTime>($"{access_token}{Constants.AppendKeyPrevReqTime}"); Assert.IsTrue(store_time.Item2); rslt = rule.Execute(new RequestInfo { Access_Token = access_token }); Assert.IsTrue(rslt); }