public void TestThreadSepFunctionality() { IExecutive exec = ExecFactory.Instance.CreateExecutive(); DateTime now = DateTime.Now; DateTime when; double priority; for (int i = 0; i < NUM_EVENTS; i++) { when = new DateTime(now.Ticks + m_random.Next()); priority = m_random.NextDouble(); Debug.WriteLine("Primary requesting detachable event service for " + when + ", at priority " + priority); exec.RequestEvent(new ExecEventReceiver(TimeSeparatedTask), when, priority, "Task " + i, ExecEventType.Detachable); } exec.Start(); Debug.WriteLine("\r\n\r\n\r\nNow going to do it again after a 1.5 second pause.\r\n\r\n\r\n"); System.Threading.Thread.Sleep(1500); exec = ExecFactory.Instance.CreateExecutive(); now = DateTime.Now; for (int i = 0; i < NUM_EVENTS; i++) { when = new DateTime(now.Ticks + m_random.Next()); priority = m_random.NextDouble(); Debug.WriteLine("Primary requesting detachable event service for " + when + ", at priority " + priority); exec.RequestEvent(new ExecEventReceiver(TimeSeparatedTask), when, priority, "Task " + i, ExecEventType.Detachable); } exec.Start(); }
public void TestSingleShotEvent() { IExecutive exec1 = ExecFactory.Instance.CreateExecutive(); m_exec1_ExecutiveStarted_SingleShot_Count = 0; exec1.ExecutiveStarted_SingleShot += new ExecutiveEvent(exec1_ExecutiveStarted_SingleShot); exec1.Start(); exec1.Start(); Debug.Assert(m_exec1_ExecutiveStarted_SingleShot_Count == 1); }
public static void Run() { RandomServer rs = null; IExecutive exec = null; Activity fooActivity = null; Activity barActivity = null; int defaultBufferSize = 100; foreach (ulong hyperSeed in new ulong[] { 87654, 23456 }) { Console.WriteLine("Test with hyperSeed of {0}.", hyperSeed); rs = new RandomServer(hyperSeed, defaultBufferSize); exec = ExecFactory.Instance.CreateExecutive(); fooActivity = new Activity("fooActivity", 5, exec, rs, 12345); barActivity = new Activity("barActivity", 6, exec, rs, 10558); exec.Start(); } ulong _hyperSeed = 24680; Console.WriteLine("Test with hyperSeed of {0}. First, with no interference:", _hyperSeed); rs = new RandomServer(_hyperSeed, defaultBufferSize); exec = ExecFactory.Instance.CreateExecutive(); fooActivity = new Activity("fooActivity", 5, exec, rs, 12345); barActivity = new Activity("barActivity", 6, exec, rs, 10558); exec.Start(); exec.Reset(); Console.WriteLine("Test with hyperSeed of {0}. This time, we interfere with Bobby:", _hyperSeed); rs = new RandomServer(_hyperSeed, defaultBufferSize); exec = ExecFactory.Instance.CreateExecutive(); fooActivity = new Activity("fooActivity", 5, exec, rs, 12345); barActivity = new Activity("barActivity", 6, exec, rs, 10558); DateTime when = DateTime.Parse("1/1/0001 7:13:29 AM"); exec.RequestEvent( delegate(IExecutive _exec, object userData) { Console.WriteLine("{0} : Doubling barActivity's multiplier.", _exec.Now); barActivity.Multiplier = 2.0; }, when); exec.Start(); }
public void TestExecutivePriority() { IExecutive exec = ExecFactory.Instance.CreateExecutive(); DateTime now = DateTime.Now; int priority; // initialize validation variables m_error = false; m_validatePriority = 0; Debug.WriteLine(""); Debug.WriteLine("Start test TestExecutivePriority"); Debug.WriteLine(""); for (int i = 0; i < NUM_EVENTS; i++) { priority = (int)(m_random.NextDouble() * 100); if (m_validatePriority < priority) { m_validatePriority = priority; } Debug.WriteLine("Primary requesting event service for " + now + ", at priority " + priority); exec.RequestEvent(new ExecEventReceiver(ExecEventRecieverPriority), now, priority, priority, m_execEventType); } Debug.WriteLine(""); exec.Start(); Debug.WriteLine(""); // test validate variable Assert.IsTrue(!m_error, "Executive did not submit events in the order of the correct priority"); Debug.WriteLine(""); }
public static void Run() { IExecutive exec = ExecFactory.Instance.CreateExecutive(); #region Set up a metronome to fire once a second in sim time. DateTime startAt = DateTime.Parse("Fri, 15 Jul 2016 00:00:00"); DateTime finishAfter = DateTime.Parse("Fri, 15 Jul 2016 00:09:59"); TimeSpan period = TimeSpan.FromSeconds(.005); Metronome_Simple metronome = Metronome_Simple.CreateMetronome(exec, startAt, finishAfter, period); metronome.TickEvent += UpdateState; #endregion // Attach an ExecController so that it runs at 100 x of user time, // and issues 10 render events every second. double scale = 2.0; // 10^2, or 100 x real-time. int frameRate = 10; // 10 render events per second. ExecController execController = new ExecController(exec, scale, frameRate, exec); execController.Render += Render; exec.Start(); Console.WriteLine("{0} simulation events fired.", exec.EventCount); }
public void TestExecutiveWhen() { IExecutive exec = ExecFactory.Instance.CreateExecutive(); DateTime now = DateTime.Now; DateTime when; // initialize validation variables m_error = false; m_validateWhen = new DateTime(now.Ticks); Debug.WriteLine(""); Debug.WriteLine("Start test TestExecutiveWhen"); Debug.WriteLine(""); for (int i = 0; i < NUM_EVENTS; i++) { when = new DateTime(now.Ticks + m_random.Next()); Debug.WriteLine("Primary requesting event service for " + when); //if (m_validateWhen.Ticks < when.Ticks) {m_validateWhen = when;} exec.RequestEvent(new ExecEventReceiver(ExecEventRecieverWhen), when, 0, when, m_execEventType); } Debug.WriteLine(""); exec.Start(); Debug.WriteLine(""); // test validation variable Assert.IsTrue(!m_error, "Executive did not submit events in correct date/time order"); Debug.WriteLine(""); }
public static void Run() { IExecutive exec = ExecFactory.Instance.CreateExecutive(); DateTime when = DateTime.Parse("Fri, 15 Jul 2016 03:51:21"); Domain.Sample1.Dog rastro = new Domain.Sample1.Dog("Rastro"); for (int i = 0; i < 5; i++) { // Schedule 15 speaking events. Domain.Sample1.Cat aCat = new Domain.Sample1.Cat("Cat_" + i); Domain.Sample1.Dog aDog = new Domain.Sample1.Dog("Dog_" + i); exec.RequestEvent(rastro.Speak, when, 0.0, null, ExecEventType.Detachable); exec.RequestEvent(aDog.Speak, when, 0.0, null, ExecEventType.Detachable); exec.RequestEvent(aCat.Speak, when, 0.0, null, ExecEventType.Detachable); when += TimeSpan.FromMinutes(10.0); } exec.RequestEvent(RescindIndividual, when - TimeSpan.FromMinutes(35), rastro); exec.RequestEvent(RescindCats, when - TimeSpan.FromMinutes(25)); exec.Start(); }
public void TestEventTimeHistorian() { IRandomChannel irc = m_rs.GetRandomChannel(); IExecutive exec = ExecFactory.Instance.CreateExecutive(); EventTimeHistorian myHistorian = new EventTimeHistorian(exec, 256); DateTime when = m_startDate; // We set up NUM_SAMPLES events with random (0->50) minute intervals. TimeSpan totalTimeSpan = TimeSpan.Zero; for (int i = 0; i < NUM_SAMPLES; i++) { exec.RequestEvent(DoEvent, when, 0.0, myHistorian, ExecEventType.Synchronous); double d = irc.NextDouble(); TimeSpan delta = TimeSpan.FromMinutes(d * 50.0); totalTimeSpan += delta; if (i < 30) { Console.WriteLine("Delta #" + i + ", " + delta.ToString()); } when += delta; } m_actualAverage = TimeSpan.FromTicks(totalTimeSpan.Ticks / NUM_SAMPLES); Console.WriteLine("Average timeSpan was " + m_actualAverage + "."); exec.Start(); Console.WriteLine("After {0} events, the average interval was {1}.", myHistorian.PastEventsReceived, myHistorian.GetAverageIntraEventDuration()); }
public void Executive_can_be_started_and_stopped() { executive.Start().Wait(); Assert.AreEqual(State.Running, executive.State); executive.Stop().Wait(); Assert.AreEqual(State.Stopped, executive.State); }
public void TestExecutiveUnRequestSelector() { IExecutive exec = ExecFactory.Instance.CreateExecutive(); DateTime now = DateTime.Now; DateTime when; double priority; // IExecEventSelector ees = null; // initialize validation variables m_error = false; m_validateUnRequest = new ArrayList(); Debug.WriteLine(""); Debug.WriteLine("Start test TestExecutiveUnRequestSelector"); Debug.WriteLine(""); for (int i = 0; i < NUM_EVENTS; i++) { when = new DateTime(now.Ticks + m_random.Next()); priority = m_random.NextDouble(); Debug.WriteLine("Primary requesting event service " + i); switch (i) { case 1: case 2: case 3: case 5: case 7: case 11: // m_validateUnRequest.Add(i); // ees = new ExecEventSelectorByTargetType(this.GetType()); // ExecEventReceiver eer = new ExecEventReceiver(ees.SelectThisEvent(eer,when,priority,i,m_execEventType)); // exec.RequestEvent(eer,when,priority,i,m_execEventType); // exec.UnRequestEvents(ees); break; default: exec.RequestEvent(new ExecEventReceiver(this.ExecEventRecieverUnRequestEventReceiver), when, priority, i, m_execEventType); break; } ; } Debug.WriteLine(""); // AEL exec.UnRequestEvents(new ExecEventSelectorByTargetType(this)); exec.Start(); Debug.WriteLine(""); // test validation variable Assert.IsTrue(!m_error, "Executive fired a unrequested event"); Debug.WriteLine(""); }
public void TestEventJoinDetachable() { IExecutive exec1 = ExecFactory.Instance.CreateExecutive("Highpoint.Sage.SimCore.Executive", Guid.NewGuid()); DateTime setupTime = new DateTime(2008, 11, 24, 12, 15, 44); ExecEventType eet = ExecEventType.Detachable; // Don't change this one. Join must be done on a detachable event. exec1.RequestEvent(new ExecEventReceiver(JoinDetachableSetup), setupTime, 0.0, null, eet); exec1.Start(); }
public void TestExecutiveUnRequestTarget() { IExecutive exec = ExecFactory.Instance.CreateExecutive(); DateTime now = DateTime.Now; DateTime when; double priority; OtherTarget ot = null; // initialize validation variables m_error = false; m_validateUnRequest = new ArrayList(); _Debug.WriteLine(""); _Debug.WriteLine("Start test TestExecutiveUnRequestTarget"); _Debug.WriteLine(""); for (int i = 0; i < NUM_EVENTS; i++) { when = new DateTime(now.Ticks + m_random.Next()); priority = m_random.NextDouble(); _Debug.WriteLine("Primary requesting event service " + i); switch (i) { case 1: case 2: case 3: case 5: case 7: case 11: m_validateUnRequest.Add(i); ot = new OtherTarget(m_validateUnRequest, m_error); ExecEventReceiver eer = new ExecEventReceiver(ot.ExecEventRecieverUnRequestEventReceiver); exec.RequestEvent(eer, when, priority, i, m_execEventType); exec.UnRequestEvents(ot); break; default: exec.RequestEvent(new ExecEventReceiver(this.ExecEventRecieverUnRequestEventReceiver), when, priority, i, m_execEventType); break; } ; } _Debug.WriteLine(""); // AEL exec.UnRequestEvents(new OtherTarget(m_validateUnRequest, m_error)); exec.Start(); _Debug.WriteLine(""); // test validation variable _Debug.Assert(!m_error, "Executive did fire a unrequested event"); _Debug.WriteLine(""); }
private void StartExec(object obj) { IExecutive exec = (IExecutive)obj; Debug.WriteLine("\r\n" + "Starting exec..." + "\r\n"); DateTime startTime = new DateTime(2006, 5, 16); exec.RequestEvent(new ExecEventReceiver(SteadyStateEventStream), startTime, 1, 400); exec.Start(); }
public static void Run() { IExecutive exec = ExecFactory.Instance.CreateExecutive(); DateTime when = DateTime.Parse("Fri, 15 Jul 2016 03:51:21"); exec.RequestEvent(new Plumber("Paul").FixTheSink, when, 0.0, null, ExecEventType.Detachable); exec.Start(); }
public static void Run() { IExecutive exec = ExecFactory.Instance.CreateExecutive(); exec.ExecutiveStarted += ExecStarted; // Allows you to register handler on every Run invocation. Else // second run invocation would result in two handlers, third, etc. exec.ExecutiveStarted_SingleShot += ExecStarted_SingleShot; Console.WriteLine("Starting the simulation. Executive is in state {0}.", exec.State); exec.Start(); Console.WriteLine("\r\nSimulation done. Executive is in state {0}.", exec.State); exec.Reset(); Console.WriteLine("\r\nReset the simulation. Executive is in state {0}.", exec.State); Console.WriteLine("\r\nRe-running the simulation. Executive is in state {0}.", exec.State); exec.Start(); }
public static void Run() { DateTime when = DateTime.Parse("Fri, 15 Jul 2016 00:00:00"); IExecutive exec = ExecFactory.Instance.CreateExecutive(); exec.RequestEvent(StartProcessToken, when, 0.0, null, ExecEventType.Detachable); exec.Start(); }
public static void Run() { IExecutive exec = ExecFactory.Instance.CreateExecutive(); DateTime when = DateTime.Parse("Fri, 15 Jul 2016 03:51:21"); exec.RequestEvent(SayHello, when); exec.Start(); }
public static void Run() { IExecutive exec = ExecFactory.Instance.CreateExecutive(); DateTime when = DateTime.Parse("Fri, 15 Jul 2016 03:51:21"); exec.RequestEvent(CookDinner, when, 0.0, null, ExecEventType.Detachable); exec.Start(); }
public static void Run() { DateTime when = DateTime.Parse("Fri, 15 Jul 2016 00:00:00"); IExecutive exec = ExecFactory.Instance.CreateExecutive(); exec.RequestDaemonEvent(CheckIfStillRunning, when, 0.0, null); exec.RequestEvent(Finish, when + TimeSpan.FromMinutes(100)); exec.Start(); }
public static void Run() { IExecutive exec = ExecFactory.Instance.CreateExecutive(); DateTime when = DateTime.Parse("Fri, 15 Jul 2016 03:51:21"); exec.RequestEvent(WriteIt, when, 0.0, "World"); exec.RequestEvent(WriteIt, when, 1.0, "Hello"); exec.Start(); }
public static void Run() { IExecutive exec = ExecFactory.Instance.CreateExecutive(); DateTime startAt = DateTime.Parse("Fri, 15 Jul 2016 00:00:00"); DateTime finishAfter = DateTime.Parse("Fri, 15 Jul 2016 23:59:59"); TimeSpan period = TimeSpan.FromMinutes(60); Metronome_Simple metronome = Metronome_Simple.CreateMetronome(exec, startAt, finishAfter, period); metronome.TickEvent += WriteIt; exec.Start(); }
public static void Run() { IExecutive exec = ExecFactory.Instance.CreateExecutive(); Queue <string> userData = new Queue <string>(new[] { "Hello", "World" }); DateTime when = DateTime.Parse("Fri, 15 Jul 2016 03:51:21"); exec.RequestEvent(WriteIt, when, 0.0, userData); exec.Start(); }
public static void Run() { IExecutive exec = ExecFactory.Instance.CreateExecutive(); DateTime startAt = DateTime.Parse("Thu, 10 Jul 2003 03:51:21"); DateTime finishAfter = DateTime.Parse("Wed 15 Dec 2004 19:22:47"); TimeSpan period = TimeSpan.FromMinutes(9000.0); Metronome_Simple metronome = Metronome_Simple.CreateMetronome(exec, startAt, finishAfter, period); metronome.TickEvent += WriteIt; exec.Start(); }
public void TestTupleBasics() { string[] expected = new string[] { "632254657940000000:RT1:" + HashCode(k1), "632254657940000000:RT2b:" + HashCode(k1), "632254657940000000:PT1:" + HashCode(k1), "632254657940000000:PT2:" + HashCode(k1), "632254657940000000:TT1:" + HashCode(k1), "632254657940000000:TT2a:" + HashCode(k1) }; InitTest(); RequestEvent(XActType.Read, k1, 0); RequestEvent(XActType.Post, k1, 0); RequestEvent(XActType.Take, k1, 0); m_exec.Start(); EvaluateTest(expected, false); }
public void TestExecutiveUnRequestHash() { string[] eventUserData = new string[] { "Cat", "Dog", "Bat", "Frog", "Mink", "Bee", "Bird", "Worm", "Horse", "Moose", "Bear", "Platypus" }; ArrayList eventsToRemove = new ArrayList(new string[] { "Cat", "Bat", "Bee", "Bird", "Bear", "Platypus" }); //ArrayList eventsThatShouldRemain = new ArrayList(new string[]{"Dog","Frog","Mink","Worm","Horse","Moose"}); IExecutive exec = ExecFactory.Instance.CreateExecutive(); DateTime now = DateTime.Now; DateTime when; double priority; // initialize validation variables m_error = false; m_validateUnRequest = new ArrayList(); Debug.WriteLine(""); Debug.WriteLine("Start test TestExecutiveUnRequestHash"); Debug.WriteLine(""); ArrayList eventIDsForRemoval = new ArrayList(); foreach (string eud in eventUserData) { when = new DateTime(now.Ticks + m_random.Next()); priority = m_random.NextDouble(); Trace.Write("Primary requesting event service with user data \"" + eud + "\", and eventID "); long eventID = exec.RequestEvent(new ExecEventReceiver(ExecEventRecieverUnRequestHash), when, priority, eud, m_execEventType); Debug.WriteLine(eventID + "."); if (eventsToRemove.Contains(eud)) { eventIDsForRemoval.Add(eventID); Debug.WriteLine("\tWe will be requesting the removal of this event."); } } foreach (long eventID in eventIDsForRemoval) { Debug.WriteLine("Unrequesting event # " + eventID); m_validateUnRequest.Add(eventID); exec.UnRequestEvent(eventID); } Debug.WriteLine(""); exec.Start(); Debug.WriteLine(""); // test validation variable Assert.IsTrue(!m_error, "Executive did fire a unrequested event"); Debug.WriteLine(""); }
public static void Run() { IExecutive exec = ExecFactory.Instance.CreateExecutive(); DateTime when = DateTime.Parse("Fri, 15 Jul 2016 03:51:21"); long eventKey = exec.RequestEvent(WriteIt, when + TimeSpan.FromMinutes(5.0), "Hello."); exec.RequestEvent(RescindIt, when, eventKey); exec.Start(); }
private void StopAndRestartExec(object obj) { System.Threading.Thread.Sleep(1000); IExecutive exec = (IExecutive)obj; Debug.WriteLine("\r\n" + "Pausing for two seconds..." + "\r\n"); Debug.WriteLine("Before pause, Exec state is " + exec.State); exec.Stop(); System.Threading.Thread.Sleep(2000); Debug.WriteLine("After pause, Exec state is " + exec.State); Debug.WriteLine("\r\n" + "Resuming..." + "\r\n"); exec.Start(); Debug.WriteLine("Exec state is now " + exec.State); }
public void DoActionTest2() { IExecutive exec = ExecFactory.Instance.CreateExecutive(); IAction part1 = new ParallelActionSet(new Action("PreDelay", FIVE_MINS, 1.0), new Action("RscAcquire", TEN_MINS, 1.0)); IAction part2 = new Action("PreDelay", TimeSpan.FromMinutes(5.0), 1.0); IAction part3 = new ConcurrentActionSet(new Action("XferIn", FIVE_MINS, 1.0), new Action("XferOut", FIFTEEN_MINS, 1.0)); IAction part4 = new Action("PostDelay", TimeSpan.FromMinutes(5.0), 1.0); IAction part5 = new ParallelActionSet(new Action("RscRelease", FIVE_MINS, 1.0), new Action("PostDelay", TWENTY_MINS, 1.0)); IAction scheme = new ActionList(part1, part2, part3, part4, part5); exec.RequestEvent(new ExecEventReceiver(scheme.Run), DateTime.Now, 0.0, null, ExecEventType.Detachable); exec.Start(); }
public void RecreateFailure() { IExecutive exec = ExecFactory.Instance.CreateExecutive("Highpoint.Sage.SimCore.ExecutiveFastLight, Sage", Guid.NewGuid()); foreach (string s in testTimes) { DateTime dt = DateTime.Parse(s); exec.RequestEvent(new ExecEventReceiver(DoIt), dt, 0.0, dt.ToString()); } m_lastNow = exec.Now; exec.Start(); }
public static void Run() { IExecutive exec = ExecFactory.Instance.CreateExecutive(); DateTime when1 = DateTime.Parse("Fri, 15 Jul 2016 03:51:21"); exec.RequestEvent(SayHello, when1); DateTime when2 = DateTime.Parse("Mon, 18 Jul 2016 05:15:08"); exec.RequestEvent(SayWorld, when2); exec.Start(); }