public void Update() { lock (this) { if (_state == TaskState.RUNNING && RunningTime >= Config.TaskUpdateInverval * 1000 * _updateCount) { _updateCount++; if ((int)_currentUsers != (int)(_currentUsers + _deltaUsers)) { long result; try { result = RequestMaker.MakeWebRequest(Timeout, URLs[0]); } catch (Exception) { result = -1; } Console.WriteLine("Task with groupNumber {0} was updated (latency {1}).", TaskGroup, result); _points.Add(new Point() { x = (int)_currentUsers, y = (int)result }); } if (RunningTime >= Duration * 60 * 1000) { TaskDistributor.Distribute(this, 0); _currentUsers = 0; _state = TaskState.FINISHED; Console.WriteLine("Task with groupNumber {0} has finished.", TaskGroup); ServerState.TasksUpdated.Set(); ServerState.RemoveTask(this); SaveResult(); ReportsHandler.SendReports(_client); } else { _currentUsers += _deltaUsers; TaskDistributor.Distribute(this, (int)_currentUsers); } } } }
public void Start() { lock (this) { if (State == TaskState.CREATED) { int result = 0; try { result = (int)RequestMaker.MakeWebRequest(Timeout, URLs[0]); } catch (Exception) { result = -1; } if (result == -1) { Console.WriteLine("Task with groupNumber {0} was aborted (web-server hasn`t responded in time)"); _state = TaskState.ABORTED; ServerState.RemoveTask(this); ServerState.TasksUpdated.Set(); return; } _state = TaskState.RUNNING; switch (Strategy) { case TestingStrategy.INCREASING: _deltaUsers = (double)VirtualUsers / (Duration * 60 / Config.TaskUpdateInverval); _currentUsers += _deltaUsers; break; case TestingStrategy.DECREASING: _deltaUsers = -(double)VirtualUsers / (Duration * 60 / Config.TaskUpdateInverval); _currentUsers = VirtualUsers; break; } TaskDistributor.Distribute(this, (int)_currentUsers); _watch.Start(); } } }