Ejemplo n.º 1
0
        private void TryAcquire(SelfManagingResource rsc, IResourceRequest irr, bool expectSuccess)
        {
            string result = "Acqusition of " + rsc.Name + " using key " + irr.Key.ToString() + " expected to " + (expectSuccess?"succeed":"fail") + ".";

            if (rsc.Acquire(irr, false) == expectSuccess)
            {
                if (expectSuccess)
                {
                    rsc.Release(irr);
                }
                Console.WriteLine("Sub-test passed : " + result);
            }
            else
            {
                _Debug.Assert(false, "Access Regulation", "Sub-test failed : " + result);
            }
        }
Ejemplo n.º 2
0
        public void TestPersistentResourceBasics()
        {
            Model model = new Model("Resource Testing Model...");

            SelfManagingResource steamSystem = new SelfManagingResource(model, "SteamSystem", Guid.NewGuid(), 7000.0, false, false, true);

            ResourceRequest[] requests = new ResourceRequest[7];
            for (int i = 0; i < 7; i++)
            {
                requests[i] = new ResourceRequest(1000.0);
            }

            for (int i = 0; i < 7; i++)
            {
                if (steamSystem.Reserve(requests[i], false))
                {
                    double obtained  = requests[i].QuantityObtained;
                    double remaining = requests[i].ResourceObtained.Available;
                    _Debug.WriteLine("Successfully reserved " + obtained + " pounds of steam - " + remaining + " remains.");
                }
                else
                {
                    _Debug.WriteLine("Failed to reserve steam for request[" + i + "]");
                }
            }

            _Debug.WriteLine("Unreserving steam from 2 requests");
            steamSystem.Unreserve(requests[2]);
            double available = steamSystem.Available;

            _Debug.WriteLine("Successfully unreserved steam - " + available + " available.");

            steamSystem.Unreserve(requests[3]);
            available = steamSystem.Available;
            _Debug.WriteLine("Successfully unreserved steam - " + available + " available.");

            for (int i = 5; i < 7; i++)
            {
                if (steamSystem.Reserve(requests[i], false))
                {
                    double obtained  = requests[i].QuantityObtained;
                    double remaining = requests[i].ResourceObtained.Available;
                    _Debug.WriteLine("Successfully reserved " + obtained + " pounds of steam - " + remaining + " remains.");
                }
                else
                {
                    _Debug.WriteLine("Failed to acquire steam for request[" + i + "]");
                }
            }


            _Debug.WriteLine("Unreserving all steam requests - ");
            for (int i = 0; i < 7; i++)
            {
                steamSystem.Unreserve(requests[i]);
            }
            available = steamSystem.Available;
            _Debug.WriteLine("Successfully unreserved steam - " + available + " available.");

            // AEL, bug "Reserve a resource over an existing one" submitted.
//			_Debug.WriteLine("Trying to acquire all steam requests - ");
//			for ( int i = 0; i < 7 ; i++ ) {
//				if ( steamSystem.Acquire(requests[i],false) ){
//					double obtained = requests[i].QuantityObtained;
//					double remaining = requests[i].ResourceObtained.Available;
//					_Debug.WriteLine("Successfully acquired " + obtained + " pounds of steam - " + remaining + " remains.");
//				} else {
//					_Debug.WriteLine("Failed to acquire steam for request["+i+"]");
//				}
//			}
//
//			_Debug.WriteLine("Releasing 2 steam requests ");
//			steamSystem.Release(requests[1]);
//			steamSystem.Release(requests[4]);
//
//			for ( int i = 5; i < 7 ; i++ ) {
//				if ( steamSystem.Acquire(requests[i],false) ){
//					double obtained = requests[i].QuantityObtained;
//					double remaining = requests[i].ResourceObtained.Available;
//					_Debug.WriteLine("Successfully acquired " + obtained + " pounds of steam - " + remaining + " remains.");
//				} else {
//					_Debug.WriteLine("Failed to acquire steam for request["+i+"]");
//				}
//			}

            _Debug.WriteLine("Releasing all steam requests - ");
            for (int i = 0; i < 7; i++)
            {
                steamSystem.Release(requests[i]);
            }

            //model.Validate();
            model.Start();
        }