Ejemplo n.º 1
0
 public Activity(string name, int numIterations, IExecutive executive, RandomServer rs, ulong seed)
 {
     m_name                      = name;
     m_numIterations             = numIterations;
     m_rc                        = rs.GetRandomChannel(seed, m_defaultBufferSize);
     executive.ExecutiveStarted += delegate(IExecutive exec) {
         exec.RequestEvent(Run, exec.Now, 0.0, null, ExecEventType.Detachable);
     };
 }
Ejemplo n.º 2
0
        void Executive_ExecutiveStarted_SingleShot2(IExecutive exec)
        {
            RandomServer r = new RandomServer(12345, 1000);

            Randoms.IRandomChannel rc = r.GetRandomChannel(98765, 1000);

            double   howMuch = 0.0;
            DateTime when    = new DateTime(2008, 08, 01, 12, 00, 00);

            for (int i = 0; i < 1000; i++)
            {
                int key    = rc.Next(0, 2);
                int deltaT = rc.Next(0, 2);
                howMuch = rc.NextDouble() * 100.0;
                switch (key)
                {
                case 0:
                    m_howMuchPut += howMuch;
                    Console.WriteLine("{0} : Add {1} kg.", when, howMuch);
                    AddSomeMaterial(when, m_mt1.CreateMass(howMuch, AMBIENT_TEMPERATURE));
                    break;

                case 1:
                    m_howMuchRetrieved += howMuch;
                    Console.WriteLine("{0} : Try to remove {1} kg.", when, howMuch);
                    RequestMaterial(when, howMuch);
                    break;

                case 2:
                    Console.WriteLine("{0} : Confirm bookkeeping.", when);
                    ConfirmTotlMass(when);
                    break;

                default:
                    break;
                }
                when += TimeSpan.FromMinutes(deltaT);
            }

            // Now, if there are outstanding requests, satisfy them.
            howMuch = m_howMuchRetrieved - m_howMuchPut;
            if (howMuch > 0)
            {
                Console.WriteLine("{0} : Add {1} kg.", when, howMuch);
                AddSomeMaterial(when, m_mt1.CreateMass(howMuch, AMBIENT_TEMPERATURE));
            }

            m_howMuchPut       = 0.0;
            m_howMuchRetrieved = 0.0;

            Console.WriteLine("Starting Test...");
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
 public HistorianTester()
 {
     m_rs = new RandomServer();
 }