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); } }
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(); }