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

SoapUI Load test, deleting folders problem


(Юлія) #1

привіт,

намагаюсь зробити лоад тест в соапі. Серед тест степів є створення і видалення папки.

Виникла проблемка...  Після рана лоад теста, не всі створені папки видалені. Чому? Таке враження ніби спочатку створюється 5 папок, а потім видаляється остання.

Але так мені не підходить, бо мені треба послідовне виконання степів. Папка видаляється по фолдер айді, яке береться з попереднього степу створення папки.

 


(Taras) #2

код як видлаяєте папки в студію


(Mykhailo Poliarush) #3

да тут надо на код смотреть, без него тяжело будет что-то подсказать

ну и сразу надо показать, как ты запускаешь нагрузочные тесты.


(Taras) #4

может бить непральние код удаления папок впринципе - может цикл кривой там какой то написан...или что то а подобе


(Юлія) #5

Я створила http request, method:DELETE, request url: .../deleteDocument.xml

Видаляє по айді id ${#TestSuite#documentID} яка береться зі властивостей сьюта.

айдішку фолдера отримую після того як її було створено таким чином:

 

import com.eviware.soapui.support.XmlHolder
 
def response = testRunner.testCase.testSteps["createFolder"].testRequest.responseContentAsXml
def holder = new XmlHolder(response)
 
def folderID = holder.getNodeValue("/result//data/id")
assert folderID
assert folderID.length() > 0
 
log.info folderID
testRunner.testCase.testSuite.setPropertyValue( "folderID", folderID ) 
 
степи йдуть послідовно, якщо запускати одним потоком то все норм, пробувала 5 потоків виставити(сімпл), то видалялась тільки кожна п'ята папка....

(kalot) #6

FileUtils.deleteRecursive(new File("c:\\TempTest")) //вместо 'c:\\TempTest' - свой путь

public class FileUtils
{
  public static boolean deleteRecursive(File path) throws FileNotFoundException
  {
    if (!path.exists()) throw new FileNotFoundException(path.getAbsolutePath())
      boolean ret = true

    if ( path.isDirectory() )
    {
      for ( File f : path.listFiles() )
        ret = ret && FileUtils.deleteRecursive(f)
    }

    return ret && path.delete()
  }
}


(Юлія) #7

дякую, але думаю трохи не те. Мені треба видаляти тільки ті які я створила, а тут на скільки я зрозуміла всі. 

а можна доречі записувати створені в масив, а потім всі папки з айдішками які є в масиві видаляти?


(kalot) #8

Смотри: я создавал отдельную папку, скажем, 'TempExcel', записывал всё туда, а потом спокойно удалял её вместе со всеми файлами (в зависимости от задач надо было и архивы распаковывать, и PDF- и Excel-репорты чекать)

Т.е. как-то так

//Proclaim the path for temp folder

String Path = "c:\\TempExcel"

//Check if a folder for temporary file exists
File TempDir = new File (Path)

if (! TempDir.exists() )
TempDir.mkdir()

Path = Path + "\\Check.xls"
File ExcelReport = new File(Path)


(Юлія) #9

гарна ідея, спробую  - відпишу результат. Дякую


(Юлія) #10

проблема вирішена, дякую всім за поради.

Виявилось, що в кілька потоків створювалась одна й та ж папка

Треба було замінити назву відповідно до індекса потоку.

Можливо комусь знадобиться :) 

 

if (context.RunCount==0)
{def threadIndex= context.ThreadIndex
def folderNameCounter=threadIndex*100000
testRunner.testCase.setPropertyValue( "folderNameCounter", folderNameCounter.toString()) }
 
Дякую всім за допомогу