1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/beetlex-io-Beetle.DT

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Beetle.DT (распределённый инструмент нагрузочного тестирования)

Распределённый инструмент нагрузочного тестирования, основанный на .NET, который позволяет пользователям создавать соответствующие тестовые сценарии в соответствии с требованиями; через интерфейс управления инструментом можно отправить тестовые сценарии в центр обслуживания, а затем распределить их по различным узлам для выполнения в зависимости от фактических требований к тестированию нагрузки. Инструмент будет получать результаты тестирования в режиме реального времени, и после завершения тестирования пользователи также могут запросить конкретные отчёты о тестировании.

Узлы используют метод изоляции процессов для запуска тестовых сценариев, поэтому выполнение каждого тестового сценария является независимым друг от друга.

Требования к среде выполнения

Текущая версия Beetle.DT может работать только в Windows + .NET 4.5 (в настоящее время поддерживается только консольный режим). После завершения функции планируется разработка расширений для службы win и .NET Core.

Инструмент развёртывает два основных приложения: центр управления тестированием и узел выполнения тестирования. Взаимодействие между центром и узлами обеспечивается путём настройки соответствующей сетевой информации.

  • Центр управления тестированием (проект Beetle.DTCenter)
    • Центру управления необходимо настроить два адреса службы: порт связи узла и порт связи управления, соответствующие значения — 9091 и 9092. Если вы хотите изменить адреса служб и порты, вы можете сделать это через файл конфигурации (Beetle.DTCenter.exe).
  <appSettings>
    <!-- ... -->
    <add key="server-host" value=""/>
    <add key="server-port" value="9091"/>

    <add key="manager-host" value=""/>
    <add key="manager-port" value="9092"/>
    <!-- ... -->
  </appSettings>
  • Узел службы тестирования (проект Beetle.DTNode)
    • Узел службы включает в себя собственную службу и каталог Beetle.DTProcess. Beetle.DTProcess используется для загрузки и выполнения тестовых сценариев. Для Beetle.DTProcess не требуется настройка какой-либо информации, но он должен находиться в каталоге соответствующего узла.
    • Основной конфигурацией узла является адрес сервера центра управления и порт, чтобы гарантировать, что узел может правильно указывать на соответствующий центр тестирования.
  <appSettings>
    <!-- ... -->
    <add key="server-host" value="127.0.0.1"/>
    <add key="server-port" value="9091"/>
    <!-- ... -->
  </appSettings>

После того как центр управления и узлы будут развёрнуты, можно использовать инструмент управления для входа в центр управления для создания, загрузки файлов, мониторинга узлов и других операций, связанных с тестированием.

Откройте инструмент управления, введите адрес службы центра управления, подключитесь к центру управления; после входа вы можете создать каталог тестирования и загрузить файлы. После выбора каталога тестирования и запуска узла нажмите кнопку «Тест», чтобы начать тестирование.

В процессе тестирования график ниже будет отображать результаты обработки запросов на параллелизм в разные периоды времени.

После завершения теста вы можете просмотреть подробные отчёты, чтобы узнать о результатах тестирования.

Тестирование HTTP, SQL и TCP

Beetle.DT сам по себе является инструментом тестирования, и без тестовых сценариев он не может выполнять никаких функций. Чтобы лучше понять назначение инструмента, были разработаны несколько базовых тестовых сценариев для простого нагрузочного тестирования HTTP, SQL и TCP.

Ниже приведены примеры реализации нескольких базовых тестовых сценариев:

  • HTTP
    public class HttpGet : TestCase<Config>
    {
        public override string Name
        {
            get
            {
                return "HTTP_GET";
            }
        }

        private long mIndex = 0;

        private List<string> mUrls = new List<string>();

        public override void Init()
        {
            base.Init();
            mUrls.AddRange(this.Config.Urls.Split(';'));
        }

        public string GetUrl()
        {
            mIndex++;
            return mUrls[(int)(mIndex % mUrls.Count)];
        }

        protected override void OnExecute()
        {
            System.Net.WebRequest wReq = System.Net.WebRequest.Create(GetUrl());
            System.Net.WebResponse wResp = wReq.GetResponse();
            System.IO.Stream respStream = wResp.GetResponseStream();
            using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.UTF8))
            {
                reader.ReadToEnd();
            }
        }
    }

    public class Config
    {

        public string Urls { get; set; }
    }
  • SQL
    public class MySqlDriver : DriverTemplate<MySqlConnection, MySqlCommand, MySqlDataAdapter, MySqlParameter, MysqlBuilder>
    {
    }

    public abstract class sqlbase : TestCase<SQLConfig>
    {
        public override void Init()
        {
            Peanut.DBContext.SetConnectionString(DB.DB1, Config.Connection);
            base.Init();
        }
        protected override void OnExecute()
        {
            base.OnExecute();
            Peanut.SQL sql = Config.Sql;
            sql.Execute();
        }
    }
    public class MSSQL : sqlbase
    {
        public override void Init()
        {
``` **Перевод кода на русский язык:**

Peanut.DBContext.SetConnectionDriver<Peanut.MSSQL>(DB.DB1);

base.Init(); }

public override string Name { get { return "mssql"; } }

}

public class MYSQL : sqlbase { public override void Init() { Peanut.DBContext.SetConnectionDriver(DB.DB1); base.Init(); }

public override string Name { get { return "mysql"; } }

}

public class SQLConfig { public string Connection { get; set; } public string Sql { get; set; } }


**TCP**

```c#
public class SocketTcpUtf : Beetle.DTCore.TestCase<TcpConfig>
{
byte[] mData;

private BeetleX.Clients.IClient mClient;

public override void Init()
{
base.Init();
mData = GetData();
mClient = BeetleX.ServerFactory.CreateTcpClient(Config.Host, Config.Port);
mClient.ClientError = OnNetError;
mClient.Receive = OnReceive;
}

private void OnReceive(IClient c, IBinaryReader reader)
{
foreach (IBuffer item in reader.GetBuffers())
{
item.Free();
}
Completed();
}

private void OnNetError(IClient c, Exception e, string message)
{
Completed(e);
}
protected virtual byte[] GetData()
{
return Encoding.UTF8.GetBytes(Config.Data);
}
public override string Name
{
get
{
return "TCP_UTF_DATA";
}
}
public override void Execute()
{
mClient.Send(mData);
}
}
public class SocketTcpHex : SocketTcpUtf
{
public override string Name
{
get
{
return "TCP_HEX_DATA";
}
}
protected override byte[] GetData()
{
return Enumerable.Range(0, Config.Data.Length)
.Where(x => x % 2 == 0)
.Select(x => Convert.ToByte(Config.Data.Substring(x, 2), 16))
.ToArray();
}

}

public class TcpConfig
{
public string Host { get; set; }

public int Port { get; set; }

public string Data { get; set; }
}

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Распределённый инструмент нагрузочного тестирования, реализованный на основе .NET, позволяет пользователям писать тестовые сценарии в соответствии с требованиями. Через интерфейс управления инструментом эти сценарии можно отправить в сервисный центр. Затем, в зависимости от требований к фактическому нагрузочному тестированию, сценарии распределя... Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/beetlex-io-Beetle.DT.git
git@api.gitlife.ru:oschina-mirror/beetlex-io-Beetle.DT.git
oschina-mirror
beetlex-io-Beetle.DT
beetlex-io-Beetle.DT
master