Beispiel #1
0
        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);
                    }
                }
            }
        }
Beispiel #2
0
        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();
                }
            }
        }