/// <summary> /// note: this does not call services /// </summary> private void TestCreateNewAccount() { XmlDocument getUserServiceXmlResponse = new XmlDocument(); string newUserResponseFromGetUserService = "<Accounts></Accounts>"; getUserServiceXmlResponse.LoadXml(newUserResponseFromGetUserService); XmlDocument createUserServiceXmlResponse = new XmlDocument(); string newUserResponseFromCreateUserService = "<Accounts> <Account AccountId=\"1\" FBAccountId=\"12345\" PIAccountId=\"123\" PISecureKey=\"gagaga\" NickName=\"mein schmeer\" FirstName=\"samir\" LastName=\"awesome\"/> </Accounts>"; createUserServiceXmlResponse.LoadXml(newUserResponseFromCreateUserService); ServerStateMachine serverStateMachine = new TestServerStateMachine(); TestUsersManager userManager = new TestUsersManager(serverStateMachine, getUserServiceXmlResponse, createUserServiceXmlResponse); // create a writer and open the file System.IO.TextWriter tw = new System.IO.StreamWriter("C:/TestCreateNewAccountLoadTest10000Users.txt"); Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); int numberOfAccountsToCreate = 100; for (int i = 0; i < numberOfAccountsToCreate; ++i) { CreateNewAccount(userManager, i, tw); } stopWatch.Stop(); tw.WriteLine("Total time it took to create " + numberOfAccountsToCreate + " of users: " + stopWatch.Elapsed.ToString()); // close the stream tw.Close(); }
// Get an object update but the object is not in the repository public void ReceiveMessageForMissingObject() { ServerStateMachine serverStateMachine = new TestServerStateMachine(); ServerObjectRepository objectRepo = new ServerObjectRepository(serverStateMachine); DistributedObjectId doId = new DistributedObjectId(100); Message updateMessage = new Message(); List <object> data = new List <object>(); data.Add("Test"); updateMessage.UpdateObjectMessage(true, false, doId, (int)MessageSubType.Chat, data); objectRepo.ReceiveRequest(updateMessage, Guid.Empty); }
public void ZoneHandling() { ServerStateMachine serverStateMachine = new TestServerStateMachine(); ServerObjectRepository objRepo = new ServerObjectRepository(serverStateMachine); // Create a distributed object to play with DistributedObjectId doId = new DistributedObjectId(100); DistributedTestObject obj = new DistributedTestObject(doId); ZoneId zoneId1 = new ZoneId(100); ZoneId zoneId2 = new ZoneId(200); objRepo.AddObject(obj); // No zone set yet Assert.IsTrue(objRepo.GetZone(obj) == null); Assert.IsTrue(objRepo.GetZone(doId) == null); Assert.IsTrue(objRepo.GetObjectsInZone(zoneId1).Count == 0); // Set the first zone objRepo.SetObjectZone(obj, zoneId1); Assert.IsTrue(objRepo.GetZone(obj) == zoneId1); Assert.IsTrue(objRepo.GetZone(doId) == zoneId1); Assert.IsTrue(objRepo.GetObjectsInZone(zoneId1).Count == 1); // Now change to the second zone objRepo.SetObjectZone(obj, zoneId2); Assert.IsTrue(objRepo.GetZone(obj) == zoneId2); Assert.IsTrue(objRepo.GetZone(doId) == zoneId2); // Should no longer be in the first zone Assert.IsTrue(objRepo.GetObjectsInZone(zoneId1).Count == 0); // Should be in the second zone Assert.IsTrue(objRepo.GetObjectsInZone(zoneId2).Count == 1); // Try setting the same zone again objRepo.SetObjectZone(obj, zoneId2); Assert.IsTrue(objRepo.GetZone(obj) == zoneId2); Assert.IsTrue(objRepo.GetZone(doId) == zoneId2); // Should be in the second zone, only once Assert.IsTrue(objRepo.GetObjectsInZone(zoneId2).Count == 1); // Remove obj objRepo.RemoveObject(obj); Assert.IsFalse(objRepo.ContainsObject(obj)); // Should not be in either zone Assert.IsTrue(objRepo.GetObjectsInZone(zoneId1).Count == 0); Assert.IsTrue(objRepo.GetObjectsInZone(zoneId2).Count == 0); }
public void SessionInterestOpenAndClose() { // Setup the server engine and its required dependencies ServerStateMachine serverStateMachine = new TestServerStateMachine(); SessionManager sessionManager = new SessionManager(); ServerObjectRepository objectRepo = new ServerObjectRepository(serverStateMachine); ServerEngine serverEngine = new ServerEngine(sessionManager, objectRepo, MockSendMessageToReflector); Guid sessionId1 = new Guid(); ZoneId zoneId1 = new ZoneId(100); ZoneId zoneId2 = new ZoneId(200); ZoneId zoneId3 = new ZoneId(300); // Simple open and close interest // Tests interest changing in an empty zone serverEngine.ProcessOpenZoneInterest(sessionId1, zoneId1); Assert.IsTrue(sessionManager.SessionIdHasInterest(sessionId1, zoneId1)); serverEngine.ProcessCloseZoneInterest(sessionId1, zoneId1); Assert.IsFalse(sessionManager.SessionIdHasInterest(sessionId1, zoneId1)); // Now test interest in two zones at once serverEngine.ProcessOpenZoneInterest(sessionId1, zoneId1); serverEngine.ProcessOpenZoneInterest(sessionId1, zoneId2); Assert.IsTrue(sessionManager.SessionIdHasInterest(sessionId1, zoneId1)); Assert.IsTrue(sessionManager.SessionIdHasInterest(sessionId1, zoneId2)); // Now close them as a list List <ZoneId> zoneIds = new List <ZoneId>(); zoneIds.Add(zoneId1); zoneIds.Add(zoneId2); serverEngine.ProcessCloseZoneInterest(sessionId1, zoneIds); Assert.IsFalse(sessionManager.SessionIdHasInterest(sessionId1, zoneId1)); Assert.IsFalse(sessionManager.SessionIdHasInterest(sessionId1, zoneId2)); // Open the same interest twice serverEngine.ProcessOpenZoneInterest(sessionId1, zoneId1); serverEngine.ProcessOpenZoneInterest(sessionId1, zoneId1); Assert.IsTrue(sessionManager.SessionIdHasInterest(sessionId1, zoneId1)); // Close it serverEngine.ProcessCloseZoneInterest(sessionId1, zoneId1); Assert.IsFalse(sessionManager.SessionIdHasInterest(sessionId1, zoneId1)); // Close interest in a zone you didn't have interest in already serverEngine.ProcessCloseZoneInterest(sessionId1, zoneId3); Assert.IsFalse(sessionManager.SessionIdHasInterest(sessionId1, zoneId3)); }
public void ObjectZoneChangingWithNobodyListening() { // Setup the server engine and its required dependencies ServerStateMachine serverStateMachine = new TestServerStateMachine(); SessionManager sessionManager = new SessionManager(); ServerObjectRepository objectRepo = new ServerObjectRepository(serverStateMachine); ServerEngine serverEngine = new ServerEngine(sessionManager, objectRepo, MockSendMessageToReflector); // Create a distributed object to play with DistributedObjectId doId = new DistributedObjectId(100); DistributedTestObject obj = new DistributedTestObject(doId); ZoneId zoneId1 = new ZoneId(100); ZoneId zoneId2 = new ZoneId(200); // Start by putting the object in the first zone serverEngine.ProcessZoneChange(obj, zoneId1); Assert.IsTrue(objectRepo.GetZone(obj) == zoneId1); // Test changing to the zone the object is already in serverEngine.ProcessZoneChange(obj, zoneId1); Assert.IsTrue(objectRepo.GetZone(obj) == zoneId1); // Now change to a new zone serverEngine.ProcessZoneChange(obj, zoneId2); Assert.IsTrue(objectRepo.GetZone(obj) == zoneId2); // Now remove the object from the zone Assert.IsTrue(serverEngine.RemoveObjectFromZone(obj) == zoneId2); Assert.IsTrue(objectRepo.GetZone(obj) == null); // Try a duplicate removal - should be safe to do Assert.IsTrue(serverEngine.RemoveObjectFromZone(obj) == null); Assert.IsTrue(objectRepo.GetZone(obj) == null); // Now put the object back in the first zone serverEngine.ProcessZoneChange(obj, zoneId1); Assert.IsTrue(objectRepo.GetZone(obj) == zoneId1); }
public void DisconnectSession() { // Setup the server engine and its required dependencies ServerStateMachine serverStateMachine = new TestServerStateMachine(); SessionManager sessionManager = new SessionManager(); ServerObjectRepository objectRepo = new ServerObjectRepository(serverStateMachine); ServerEngine serverEngine = new ServerEngine(sessionManager, objectRepo, MockSendMessageToReflector); // Create a distributed object to play with DistributedObjectId doId = new DistributedObjectId(100); DistributedTestObject obj = new DistributedTestObject(doId); ZoneId zoneId = new ZoneId(200); Guid sessionId = new Guid(); Assert.IsTrue(sessionManager.AddSession(sessionId, new ServerAccount(new AccountId(0), 0, "0", "0", "schmear", "mein", "schmeer", null))); objectRepo.AddObjectToSessionId(sessionId, obj); serverEngine.ProcessOpenZoneInterest(sessionId, zoneId); serverEngine.ProcessZoneChange(obj, zoneId); serverEngine.ProcessDisconnectSession(sessionId); // See if the object repo got cleaned up // Object repo should no longer have the object Assert.IsFalse(objectRepo.ContainsObject(obj)); Assert.IsTrue(objectRepo.GetObject(doId) == null); // Object should not be in the zone Assert.IsFalse(objectRepo.GetObjectsInZone(zoneId).Contains(obj)); Assert.IsTrue(objectRepo.GetDistributedObjectIdsOwnedBySessionId(sessionId).Count == 0); // See if the session manager got cleaned up // Session manager should no longer have the session Assert.IsFalse(sessionManager.ContainsSession(sessionId)); // Zone interest should be cleaned up Assert.IsFalse(sessionManager.SessionIdHasInterest(sessionId, zoneId)); Assert.IsFalse(sessionManager.GetSessionIdsInterestedInZoneId(zoneId).Contains(sessionId)); Assert.IsFalse(sessionManager.GetZoneIdsFromInterestedSessionId(sessionId).Contains(zoneId)); }
public void GetAccountForUserTest() { XmlDocument getUserServiceXmlResponse = new XmlDocument(); string newUserResponseFromGetUserService = "<Accounts></Accounts>"; getUserServiceXmlResponse.LoadXml(newUserResponseFromGetUserService); XmlDocument createUserServiceXmlResponse = new XmlDocument(); string newUserResponseFromCreateUserService = "<Accounts> <Account AccountId=\"1\" FBAccountId=\"12345\" PIAccountId=\"123\" PISecureKey=\"gagaga\" NickName=\"mein schmeer\" FirstName=\"samir\" LastName=\"awesome\"/> </Accounts>"; createUserServiceXmlResponse.LoadXml(newUserResponseFromCreateUserService); ServerAccount createUserServiceServerAccount = new ServerAccount(new AccountId(1), (long)12345, string.Empty, string.Empty, "mein schmeer", "samir", "awesome", null); ServerStateMachine serverStateMachine = new TestServerStateMachine(); TestUsersManager userManager = new TestUsersManager(serverStateMachine, getUserServiceXmlResponse, createUserServiceXmlResponse); userManager.GetAccountForUser("12345", "qwerty", "mein schmeer", "samir", "awesome", "123.456.7.890", "MockCampaign", "MockFacebookReferredId", delegate(ServerAccount serverAccount) { Assert.IsTrue(serverAccount.Nickname == "mein schmeer", "NickName does not match"); Assert.IsTrue(serverAccount.FacebookAccountId.ToString() == "12345", "FacebookAccountId does not match"); }); }