Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

(windows) Как в автотесте прверить что приложение не падает с ошибками при ограничении RAM памяти?

windows
performance
stress
load
Теги: #<Tag:0x00007f7b652fc438> #<Tag:0x00007f7b652fc2f8> #<Tag:0x00007f7b652fc190> #<Tag:0x00007f7b652fc050>

(Tatyana Durova) #1

Стоит задача проверить работу приложения под Windows, по требованиям оно должно работать без исключений OutOfMemoty, в первоисточнике требований это написано так: “if app runs only with 1 GB RAM”. Не знаю, что конректно имеется в виду в этом требовании, то что именно на процесс с приложением будет выделено 1 GB RAM или на всю систему в целом… В идеале рассмотреть два варианта. Как это можно проверить в автотестах ( C#), кроме ручной проверки в сторонних утилитах / диспетчерах задачах / монтирование виртуальной машины / докер контейнеров?


(Dzmitry Ihnatsyeu) #2

В случае, если нужно мониторить общую память на всю систему, просто создайте виртуальную машину с 1 GB памяти.
В случае, если вам нужно мониторить сколько ресурсов ест сам процесс, почитайте тут:
https://technet.microsoft.com/it-it/library/cc753182(v=ws.10).aspx

Боюсь без разворачивания виртуалки с нужным количеством RAM, вам придется загружать систему ненужными процессами для использования RAM, например в тестах в объект записать большие данные. Но это выглядит как-то совсем криво. Лучше разверните тестовое окружение с нужными параметрами : это общепризнанный подход


(Дмитрий Мирошник) #3

Я бы создал виртуалку с 1 гигом памяти. Только тут не хватает информации:
1). Какая ОС?
2). Что ещё должно крутиться на сервере одновременно с приложением?
3). Какое время отклика приложения будет считаться приемлемым в случае отсутствия свободной памяти (когда данные приложения начнут свопироваться)?
4). Какой объём свопа на ОС? Фиксированный (тогда необходимо рассмотреть вариант превышения объёма свопа) или динамический (тогда необходимо рассмотреть вариант наличия достаточного свободного места на жестком диске)?

Для альтернативного сценария, я думаю, в командной строке приложения должны быть параметры, контролирующие объём используемой памяти (типа XMX, XMS для Java приложения). Если они есть - надо поиграться с ними. В противном случае я слабо себе представляю юз кейс для данного требования: по крайней мере, винда, к примеру, ограничивает возможный объём занимаемой приложением памяти исключительно способностью эту самую память адресовать (3 гига для 32-битной ОС), соответственно, я не вижу сценария, способного ограничить приложение при наличии свободной памяти и / или каким-то образом воздействовать на процесс выделения памяти приложению от ОС.