public async Task ShouldBeCompletedСonsequentiallyAsync() { var env = await TestEnvironment.CreateSimpleAsync(); var man = new AsyncTaskManager(new MockConfigurationStorage()); man.MaxNumberOfTasksRunning = 1; List <LockTask> tasks = new List <LockTask>(); for (int i = 0; i < 10; i++) { var newTask = new LockTask(env.Account); tasks.Add(newTask); man.Add(newTask); } for (var i = 0; i < 10; i++) { var currentTask = tasks[i]; currentTask.locker.Set(); Assert.IsTrue(currentTask.CompleteWaitHandle.WaitOne()); Assert.AreEqual(AsyncTaskState.Completed, currentTask.State); for (var k = i + 2; k < 10; k++) { var task = tasks[k]; Assert.AreEqual(AsyncTaskState.Waiting, task.State); } } }
/// <summary> /// ミューテックスを取得<br /> /// </summary> /// /// <returns>IEnumerator</returns> /// <param name="callback">コールバックハンドラ</param> /// <param name="request">リクエストパラメータ</param> public IEnumerator Lock( Request.LockRequest request, UnityAction <AsyncResult <Result.LockResult> > callback ) { var task = new LockTask(request, callback); return(Gs2WebSocketSession.Execute(task)); }
public void ShouldBeAsync() { var man = new AsyncTaskManager(new MockConfigurationStorage()); // very long task var task = new LockTask(100000); man.Add(task); // wait short a time and check state Assert.IsFalse(task.CompleteWaitHandle.WaitOne(100)); Assert.AreNotEqual(AsyncTaskState.Completed, task.State); Assert.IsFalse(task.ok); }
public void ShouldBeCompletedAtTime() { var man = new AsyncTaskManager(new MockConfigurationStorage()); var task = new LockTask(); man.Add(task); Assert.IsFalse(task.ok); task.locker.Set(); Assert.IsTrue(task.CompleteWaitHandle.WaitOne()); Assert.IsTrue(task.ok); Assert.AreEqual(AsyncTaskState.Completed, task.State); }
/// <summary> /// ミューテックスを取得<br /> /// </summary> /// /// <returns>IEnumerator</returns> /// <param name="callback">コールバックハンドラ</param> /// <param name="request">リクエストパラメータ</param> public IEnumerator Lock( Request.LockRequest request, UnityAction <AsyncResult <Result.LockResult> > callback ) { var task = new LockTask(request, callback); if (_certificateHandler != null) { task.UnityWebRequest.certificateHandler = _certificateHandler; } return(Gs2RestSession.Execute(task)); }
public async Task ShouldBeCompletedhHierarchically() { var env = await TestEnvironment.CreateSimpleAsync(); var createFolder = new LockTask(env.Account); var createSubfolder = new LockTask(env.Account, 10, new AsyncTask[] { createFolder }); var uploadFile1 = new LockTask(env.Account, 10, new AsyncTask[] { createSubfolder }); var uploadFile2 = new LockTask(env.Account, 10, new AsyncTask[] { createSubfolder }); var deleteFile2 = new LockTask(env.Account, 10, new AsyncTask[] { uploadFile2 }); var man = new AsyncTaskManager(new MockConfigurationStorage()); man.Add(createFolder); man.Add(createSubfolder); man.Add(uploadFile1); man.Add(uploadFile2); man.Add(deleteFile2); createFolder.locker.Set(); Assert.IsFalse(createSubfolder.ok); createSubfolder.locker.Set(); Assert.IsFalse(uploadFile1.ok); uploadFile1.locker.Set(); Assert.IsFalse(uploadFile2.ok); uploadFile2.locker.Set(); Assert.IsFalse(deleteFile2.ok); deleteFile2.locker.Set(); Assert.IsTrue(deleteFile2.CompleteWaitHandle.WaitOne()); Assert.IsTrue(createFolder.ok); Assert.IsTrue(createSubfolder.ok); Assert.IsTrue(uploadFile1.ok); Assert.IsTrue(uploadFile2.ok); Assert.IsTrue(deleteFile2.ok); }
public async Task ShouldBeCompletedСonsequentiallyAsync() { var env = await TestEnvironment.CreateSimpleAsync(); var man = new AsyncTaskManager(new MockConfigurationStorage()); man.MaxNumberOfTasksRunning = 1; List<LockTask> tasks = new List<LockTask>(); for (int i = 0; i < 10; i++) { var newTask = new LockTask(env.Account); tasks.Add(newTask); man.Add(newTask); } for (var i = 0; i < 10; i++) { var currentTask = tasks[i]; currentTask.locker.Set(); Assert.IsTrue(currentTask.CompleteWaitHandle.WaitOne()); Assert.AreEqual(AsyncTaskState.Completed, currentTask.State); for (var k = i + 2; k < 10; k++) { var task = tasks[k]; Assert.AreEqual(AsyncTaskState.Waiting, task.State); } } }