<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="2.9" jmeter="3.0 r1743807">
  <hashTree>
    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="438-BackEnd_BVT.jmx" enabled="true">
      <stringProp name="TestPlan.comments">omrir1_598_06-06-2016-08-52 || omrir1_680_09-06-2016-14-43</stringProp>
      <boolProp name="TestPlan.functional_mode">true</boolProp>
      <boolProp name="TestPlan.serialize_threadgroups">true</boolProp>
      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="ASDC_SETUP" elementType="Argument">
            <stringProp name="Argument.name">ASDC_SETUP</stringProp>
            <stringProp name="Argument.value">${__P(setup,ranp_955_26-06-2016-13-41)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="NUM_OF_THREAD" elementType="Argument">
            <stringProp name="Argument.name">NUM_OF_THREAD</stringProp>
            <stringProp name="Argument.value">${__P(iterations,1)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="TEST_DURATION" elementType="Argument">
            <stringProp name="Argument.name">TEST_DURATION</stringProp>
            <stringProp name="Argument.value">${__P(Duration,1)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="MAIN_THREAD_GROUP_CNT" elementType="Argument">
            <stringProp name="Argument.name">MAIN_THREAD_GROUP_CNT</stringProp>
            <stringProp name="Argument.value">${__P(loops,1)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <stringProp name="TestPlan.user_define_classpath"></stringProp>
      <boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp>
    </TestPlan>
    <hashTree>
      <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="Test General Variables" enabled="true">
        <collectionProp name="Arguments.arguments">
          <elementProp name="##################   Test-Params   ##################" elementType="Argument">
            <stringProp name="Argument.name">##################   Test-Params   ##################</stringProp>
            <stringProp name="Argument.value">##############################################</stringProp>
            <stringProp name="Argument.desc">##############################################</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="TestName" elementType="Argument">
            <stringProp name="Argument.name">TestName</stringProp>
            <stringProp name="Argument.value">000-BackEnd_BVT.log</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="step" elementType="Argument">
            <stringProp name="Argument.name">step</stringProp>
            <stringProp name="Argument.value">0</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="product" elementType="Argument">
            <stringProp name="Argument.name">product</stringProp>
            <stringProp name="Argument.value">ASDC</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="dashboard_path" elementType="Argument">
            <stringProp name="Argument.name">dashboard_path</stringProp>
            <stringProp name="Argument.value">/sdc1/proxy-designer1#/dashboard</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="service_name" elementType="Argument">
            <stringProp name="Argument.name">service_name</stringProp>
            <stringProp name="Argument.value">Internet_${__RandomString(5,ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,)}</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="fileRepo" elementType="Argument">
            <stringProp name="Argument.name">fileRepo</stringProp>
            <stringProp name="Argument.value">/qa-test-repo/asdc_repo/heat_tmpl/438/</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="file" elementType="Argument">
            <stringProp name="Argument.name">file</stringProp>
            <stringProp name="Argument.value">HeatValidations.zip</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="zip" elementType="Argument">
            <stringProp name="Argument.name">zip</stringProp>
            <stringProp name="Argument.value">application/zip</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="#####################   URL   ####################" elementType="Argument">
            <stringProp name="Argument.name">#####################   URL   ####################</stringProp>
            <stringProp name="Argument.value">##############################################</stringProp>
            <stringProp name="Argument.desc">##############################################</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="port" elementType="Argument">
            <stringProp name="Argument.name">port</stringProp>
            <stringProp name="Argument.value">8080</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="protocol" elementType="Argument">
            <stringProp name="Argument.name">protocol</stringProp>
            <stringProp name="Argument.value">http</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="##############################################" elementType="Argument">
            <stringProp name="Argument.name">##############################################</stringProp>
            <stringProp name="Argument.value">##############################################</stringProp>
            <stringProp name="Argument.desc">##############################################</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
          <elementProp name="HTTP_CSP_ATTUID" elementType="Argument">
            <stringProp name="Argument.name">HTTP_CSP_ATTUID</stringProp>
            <stringProp name="Argument.value">BVT</stringProp>
            <stringProp name="Argument.metadata">=</stringProp>
          </elementProp>
        </collectionProp>
        <stringProp name="TestPlan.comments">attvdi142</stringProp>
      </Arguments>
      <hashTree/>
      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Test Init" enabled="true">
        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
          <boolProp name="LoopController.continue_forever">false</boolProp>
          <stringProp name="LoopController.loops">1</stringProp>
        </elementProp>
        <stringProp name="ThreadGroup.num_threads">1</stringProp>
        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
        <longProp name="ThreadGroup.start_time">1422885662000</longProp>
        <longProp name="ThreadGroup.end_time">1422885662000</longProp>
        <boolProp name="ThreadGroup.scheduler">false</boolProp>
        <stringProp name="ThreadGroup.duration"></stringProp>
        <stringProp name="ThreadGroup.delay"></stringProp>
      </ThreadGroup>
      <hashTree>
        <SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="Remove previous log file" enabled="true">
          <boolProp name="SystemSampler.checkReturnCode">false</boolProp>
          <stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
          <stringProp name="SystemSampler.command">rm</stringProp>
          <elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments">
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">-rf</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">/tmp/TestResult/${TestName}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments"/>
          </elementProp>
          <stringProp name="SystemSampler.directory"></stringProp>
        </SystemSampler>
        <hashTree>
          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
            <boolProp name="ResultCollector.error_logging">false</boolProp>
            <objProp>
              <name>saveConfig</name>
              <value class="SampleSaveConfiguration">
                <time>true</time>
                <latency>true</latency>
                <timestamp>true</timestamp>
                <success>true</success>
                <label>true</label>
                <code>true</code>
                <message>true</message>
                <threadName>true</threadName>
                <dataType>true</dataType>
                <encoding>true</encoding>
                <assertions>true</assertions>
                <subresults>true</subresults>
                <responseData>true</responseData>
                <samplerData>true</samplerData>
                <xml>false</xml>
                <fieldNames>true</fieldNames>
                <responseHeaders>true</responseHeaders>
                <requestHeaders>true</requestHeaders>
                <responseDataOnError>false</responseDataOnError>
                <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
                <assertionsResultsToSave>0</assertionsResultsToSave>
                <bytes>true</bytes>
                <url>true</url>
                <fileName>true</fileName>
                <hostname>true</hostname>
                <threadCounts>true</threadCounts>
                <sampleCount>true</sampleCount>
                <idleTime>true</idleTime>
              </value>
            </objProp>
            <stringProp name="filename"></stringProp>
          </ResultCollector>
          <hashTree/>
        </hashTree>
        <SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="Get API&amp;Names" enabled="true">
          <boolProp name="SystemSampler.checkReturnCode">false</boolProp>
          <stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
          <stringProp name="SystemSampler.command">cat</stringProp>
          <elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments">
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">ASDC.txt</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments"/>
          </elementProp>
          <stringProp name="SystemSampler.directory">/qa-test-repo/API/</stringProp>
        </SystemSampler>
        <hashTree>
          <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Extract API data" enabled="true">
            <boolProp name="resetInterpreter">false</boolProp>
            <stringProp name="parameters"></stringProp>
            <stringProp name="filename"></stringProp>
            <stringProp name="script">String ResponseString = prev.getResponseDataAsString();

String[] ActionItem= ResponseString.split(&quot;\n&quot;);

for( String s : ActionItem)
{
     log.info(&quot;line is : &quot; + s);
     log.info(&quot;key is : &quot; + s.split(&quot;!~!~!&quot;)[0]);
     log.info(&quot;value is : &quot; + s.split(&quot;!~!~!&quot;)[1]);
     props.put(s.split(&quot;!~!~!&quot;)[0], s.split(&quot;!~!~!&quot;)[1]);
}

	
</stringProp>
          </BeanShellPostProcessor>
          <hashTree/>
          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
            <boolProp name="ResultCollector.error_logging">false</boolProp>
            <objProp>
              <name>saveConfig</name>
              <value class="SampleSaveConfiguration">
                <time>true</time>
                <latency>true</latency>
                <timestamp>true</timestamp>
                <success>true</success>
                <label>true</label>
                <code>true</code>
                <message>true</message>
                <threadName>true</threadName>
                <dataType>true</dataType>
                <encoding>true</encoding>
                <assertions>true</assertions>
                <subresults>true</subresults>
                <responseData>true</responseData>
                <samplerData>true</samplerData>
                <xml>false</xml>
                <fieldNames>true</fieldNames>
                <responseHeaders>true</responseHeaders>
                <requestHeaders>true</requestHeaders>
                <responseDataOnError>false</responseDataOnError>
                <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
                <assertionsResultsToSave>0</assertionsResultsToSave>
                <bytes>true</bytes>
                <url>true</url>
                <fileName>true</fileName>
                <hostname>true</hostname>
                <threadCounts>true</threadCounts>
                <sampleCount>true</sampleCount>
                <idleTime>true</idleTime>
              </value>
            </objProp>
            <stringProp name="filename">/tmp/TestResult/ResultsTree.csv</stringProp>
          </ResultCollector>
          <hashTree/>
        </hashTree>
        <SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="Get SUT Parameters" enabled="true">
          <boolProp name="SystemSampler.checkReturnCode">false</boolProp>
          <stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
          <stringProp name="SystemSampler.command">bash</stringProp>
          <elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments">
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">Get_SUT_Params.sh</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">${product}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">${ASDC_SETUP}.xml</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments"/>
          </elementProp>
          <stringProp name="SystemSampler.directory">/qa-test-repo/scripts/ASDC/</stringProp>
        </SystemSampler>
        <hashTree>
          <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Extract Environment data" enabled="true">
            <boolProp name="resetInterpreter">false</boolProp>
            <stringProp name="parameters"></stringProp>
            <stringProp name="filename"></stringProp>
            <stringProp name="script">String ResponseString = prev.getResponseDataAsString();

log.info(&quot;########################&quot; + ResponseString);

String[] ActionItem= ResponseString.split(&quot;\n&quot;);

for( String s : ActionItem)
{
     log.info(&quot;line is : &quot; + s);
     log.info(&quot;data field name is : &quot; + s.split(&quot; &quot;)[0]);
     log.info(&quot;value is : &quot; + s.split(&quot; &quot;)[1]);
     props.put(s.split(&quot; &quot;)[0], s.split(&quot; &quot;)[1]);
}
</stringProp>
          </BeanShellPostProcessor>
          <hashTree/>
          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
            <boolProp name="ResultCollector.error_logging">false</boolProp>
            <objProp>
              <name>saveConfig</name>
              <value class="SampleSaveConfiguration">
                <time>true</time>
                <latency>true</latency>
                <timestamp>true</timestamp>
                <success>true</success>
                <label>true</label>
                <code>true</code>
                <message>true</message>
                <threadName>true</threadName>
                <dataType>true</dataType>
                <encoding>true</encoding>
                <assertions>true</assertions>
                <subresults>true</subresults>
                <responseData>true</responseData>
                <samplerData>true</samplerData>
                <xml>false</xml>
                <fieldNames>true</fieldNames>
                <responseHeaders>true</responseHeaders>
                <requestHeaders>true</requestHeaders>
                <responseDataOnError>false</responseDataOnError>
                <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
                <assertionsResultsToSave>0</assertionsResultsToSave>
                <bytes>true</bytes>
                <url>true</url>
                <fileName>true</fileName>
                <hostname>true</hostname>
                <threadCounts>true</threadCounts>
                <sampleCount>true</sampleCount>
                <idleTime>true</idleTime>
              </value>
            </objProp>
            <stringProp name="filename">/tmp/TestResult/ResultsTree.csv</stringProp>
          </ResultCollector>
          <hashTree/>
        </hashTree>
      </hashTree>
      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Test Flow" enabled="true">
        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
          <boolProp name="LoopController.continue_forever">false</boolProp>
          <stringProp name="LoopController.loops">${MAIN_THREAD_GROUP_CNT}</stringProp>
        </elementProp>
        <stringProp name="ThreadGroup.num_threads">${NUM_OF_THREAD}</stringProp>
        <stringProp name="ThreadGroup.ramp_time">${TEST_DURATION}</stringProp>
        <longProp name="ThreadGroup.start_time">1422885662000</longProp>
        <longProp name="ThreadGroup.end_time">1422885662000</longProp>
        <boolProp name="ThreadGroup.scheduler">false</boolProp>
        <stringProp name="ThreadGroup.duration"></stringProp>
        <stringProp name="ThreadGroup.delay"></stringProp>
      </ThreadGroup>
      <hashTree>
        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager Main" enabled="true">
          <collectionProp name="HeaderManager.headers">
            <elementProp name="" elementType="Header">
              <stringProp name="Header.name">Accept</stringProp>
              <stringProp name="Header.value">application/json</stringProp>
            </elementProp>
            <elementProp name="" elementType="Header">
              <stringProp name="Header.name">Content-Type</stringProp>
              <stringProp name="Header.value">application/json</stringProp>
            </elementProp>
            <elementProp name="" elementType="Header">
              <stringProp name="Header.name">HTTP_CSP_ATTUID</stringProp>
              <stringProp name="Header.value">${HTTP_CSP_ATTUID}</stringProp>
            </elementProp>
          </collectionProp>
          <stringProp name="TestPlan.comments">Accept - application/octet-stream</stringProp>
        </HeaderManager>
        <hashTree/>
        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Vendor License Model" enabled="true"/>
        <hashTree>
          <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Define Test VLM Properties" enabled="true">
            <stringProp name="BeanShellSampler.query">${__eval(${__FileToString(/qa-test-repo/TestsProperties/ASDC/VLM_props.txt)})};</stringProp>
            <stringProp name="BeanShellSampler.filename"></stringProp>
            <stringProp name="BeanShellSampler.parameters"></stringProp>
            <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
          </BeanShellSampler>
          <hashTree>
            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
              <stringProp name="ConstantTimer.delay">300</stringProp>
            </ConstantTimer>
            <hashTree/>
          </hashTree>
          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Vendor License Model" enabled="true">
            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
              <collectionProp name="Arguments.arguments">
                <elementProp name="" elementType="HTTPArgument">
                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
                  <stringProp name="Argument.value">${__eval(${__FileToString(/qa-test-repo/TestsProperties/ASDC/VLM_body.txt)})}</stringProp>
                  <stringProp name="Argument.metadata">=</stringProp>
                </elementProp>
              </collectionProp>
            </elementProp>
            <stringProp name="HTTPSampler.domain">${__P(VM_controller)}</stringProp>
            <stringProp name="HTTPSampler.port">${port}</stringProp>
            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
            <stringProp name="HTTPSampler.response_timeout"></stringProp>
            <stringProp name="HTTPSampler.protocol">${protocol}</stringProp>
            <stringProp name="HTTPSampler.contentEncoding"></stringProp>
            <stringProp name="HTTPSampler.path">${__P(ASDC_prefix)}</stringProp>
            <stringProp name="HTTPSampler.method">POST</stringProp>
            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
            <stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp>
            <boolProp name="HTTPSampler.monitor">false</boolProp>
            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
          </HTTPSamplerProxy>
          <hashTree>
            <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
              <boolProp name="ResultCollector.error_logging">false</boolProp>
              <objProp>
                <name>saveConfig</name>
                <value class="SampleSaveConfiguration">
                  <time>true</time>
                  <latency>true</latency>
                  <timestamp>true</timestamp>
                  <success>true</success>
                  <label>true</label>
                  <code>true</code>
                  <message>true</message>
                  <threadName>true</threadName>
                  <dataType>true</dataType>
                  <encoding>false</encoding>
                  <assertions>true</assertions>
                  <subresults>true</subresults>
                  <responseData>false</responseData>
                  <samplerData>false</samplerData>
                  <xml>false</xml>
                  <fieldNames>false</fieldNames>
                  <responseHeaders>false</responseHeaders>
                  <requestHeaders>false</requestHeaders>
                  <responseDataOnError>false</responseDataOnError>
                  <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                  <assertionsResultsToSave>0</assertionsResultsToSave>
                  <bytes>true</bytes>
                  <threadCounts>true</threadCounts>
                </value>
              </objProp>
              <stringProp name="filename"></stringProp>
            </ResultCollector>
            <hashTree/>
            <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Get VLM from Response" enabled="true">
              <stringProp name="RegexExtractor.useHeaders">false</stringProp>
              <stringProp name="RegexExtractor.refname">VLM</stringProp>
              <stringProp name="RegexExtractor.regex">&quot;value&quot;:&quot;(.+?)&quot;</stringProp>
              <stringProp name="RegexExtractor.template">$1$</stringProp>
              <stringProp name="RegexExtractor.default">0</stringProp>
              <stringProp name="RegexExtractor.match_number">1</stringProp>
              <stringProp name="Scope.variable"></stringProp>
            </RegexExtractor>
            <hashTree/>
            <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Log" enabled="true">
              <boolProp name="resetInterpreter">false</boolProp>
              <stringProp name="parameters"></stringProp>
              <stringProp name="filename"></stringProp>
              <stringProp name="script">String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();

props.put(&quot;VLM_P&quot;,&quot;${VLM}&quot;);

String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;

p.println(&quot;\n#######################&quot;+&quot; Create Vendor License Model &quot;+&quot;#######################&quot;);

if (ResponseCode.contains(&quot;200&quot;))
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: PASS&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);
}
else
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode);
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);
}

p.println(&quot;############################################################################\n&quot;);

p.close();f.close();</stringProp>
            </BeanShellPostProcessor>
            <hashTree/>
            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
              <stringProp name="ConstantTimer.delay">300</stringProp>
            </ConstantTimer>
            <hashTree/>
            <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Stop in case of error" enabled="true">
              <intProp name="OnError.action">1</intProp>
            </ResultAction>
            <hashTree/>
          </hashTree>
          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Vendor License Model" enabled="true">
            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
              <collectionProp name="Arguments.arguments">
                <elementProp name="" elementType="HTTPArgument">
                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
                  <stringProp name="Argument.value"></stringProp>
                  <stringProp name="Argument.metadata">=</stringProp>
                </elementProp>
              </collectionProp>
            </elementProp>
            <stringProp name="HTTPSampler.domain">${__P(VM_controller)}</stringProp>
            <stringProp name="HTTPSampler.port">${port}</stringProp>
            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
            <stringProp name="HTTPSampler.response_timeout"></stringProp>
            <stringProp name="HTTPSampler.protocol">${protocol}</stringProp>
            <stringProp name="HTTPSampler.contentEncoding"></stringProp>
            <stringProp name="HTTPSampler.path">${__P(ASDC_prefix)}/${VLM}</stringProp>
            <stringProp name="HTTPSampler.method">GET</stringProp>
            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
            <stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp>
            <boolProp name="HTTPSampler.monitor">false</boolProp>
            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
          </HTTPSamplerProxy>
          <hashTree>
            <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
              <boolProp name="ResultCollector.error_logging">false</boolProp>
              <objProp>
                <name>saveConfig</name>
                <value class="SampleSaveConfiguration">
                  <time>true</time>
                  <latency>true</latency>
                  <timestamp>true</timestamp>
                  <success>true</success>
                  <label>true</label>
                  <code>true</code>
                  <message>true</message>
                  <threadName>true</threadName>
                  <dataType>true</dataType>
                  <encoding>false</encoding>
                  <assertions>true</assertions>
                  <subresults>true</subresults>
                  <responseData>false</responseData>
                  <samplerData>false</samplerData>
                  <xml>false</xml>
                  <fieldNames>false</fieldNames>
                  <responseHeaders>false</responseHeaders>
                  <requestHeaders>false</requestHeaders>
                  <responseDataOnError>false</responseDataOnError>
                  <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                  <assertionsResultsToSave>0</assertionsResultsToSave>
                  <bytes>true</bytes>
                  <threadCounts>true</threadCounts>
                </value>
              </objProp>
              <stringProp name="filename"></stringProp>
            </ResultCollector>
            <hashTree/>
            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
              <stringProp name="ConstantTimer.delay">300</stringProp>
            </ConstantTimer>
            <hashTree/>
            <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Log" enabled="true">
              <boolProp name="resetInterpreter">false</boolProp>
              <stringProp name="parameters"></stringProp>
              <stringProp name="filename"></stringProp>
              <stringProp name="script">String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();

import org.apache.jmeter.services.FileServer;
import test.TestParse.*;

String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;

Map map = new HashMap();

map.put(&quot;vendorName&quot;,&quot;${__P(VLM_vendorName)}&quot;);
map.put(&quot;description&quot;,&quot;${__P(VLM_description)}&quot;);
map.put(&quot;iconRef&quot;,&quot;${__P(VLM_iconRef)}&quot;);
map.put(&quot;id&quot;,&quot;${__P(VLM_P)}&quot;);


DataValidation dv = new DataValidation();
String res = dv.verifyResponse(map,ResponseString);

p.println(&quot;\n#######################&quot;+&quot; Get Vendor License Model &quot;+&quot;#######################&quot;);

if (ResponseCode.contains(&quot;200&quot;) &amp;&amp; !res.contains(&quot;FAIL&quot;))
{
	p.println(mydate + &quot; : Thread number ${__threadNum()}  in step ${__samplerName}: PASS&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);

	p.println(res);
}
else
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);

	p.println(res);
}
p.println(&quot;#####################################################################\n&quot;);

p.close();f.close();</stringProp>
            </BeanShellPostProcessor>
            <hashTree/>
          </hashTree>
        </hashTree>
        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Entitlement Pool" enabled="true"/>
        <hashTree>
          <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Define Test EP Properties" enabled="true">
            <stringProp name="BeanShellSampler.query">${__eval(${__FileToString(/qa-test-repo/TestsProperties/ASDC/EP_props.txt)})}</stringProp>
            <stringProp name="BeanShellSampler.filename"></stringProp>
            <stringProp name="BeanShellSampler.parameters"></stringProp>
            <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
          </BeanShellSampler>
          <hashTree>
            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
              <stringProp name="ConstantTimer.delay">300</stringProp>
            </ConstantTimer>
            <hashTree/>
          </hashTree>
          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Entitlement Pool" enabled="true">
            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
              <collectionProp name="Arguments.arguments">
                <elementProp name="" elementType="HTTPArgument">
                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
                  <stringProp name="Argument.value">${__eval(${__FileToString(/qa-test-repo/TestsProperties/ASDC/EP_body.txt)})}</stringProp>
                  <stringProp name="Argument.metadata">=</stringProp>
                </elementProp>
              </collectionProp>
            </elementProp>
            <stringProp name="HTTPSampler.domain">${__P(VM_controller)}</stringProp>
            <stringProp name="HTTPSampler.port">${port}</stringProp>
            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
            <stringProp name="HTTPSampler.response_timeout"></stringProp>
            <stringProp name="HTTPSampler.protocol">${protocol}</stringProp>
            <stringProp name="HTTPSampler.contentEncoding"></stringProp>
            <stringProp name="HTTPSampler.path">${__P(ASDC_prefix)}/${__P(VLM_P)}/${__P(EP)}</stringProp>
            <stringProp name="HTTPSampler.method">POST</stringProp>
            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
            <stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp>
            <boolProp name="HTTPSampler.monitor">false</boolProp>
            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
          </HTTPSamplerProxy>
          <hashTree>
            <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
              <boolProp name="ResultCollector.error_logging">false</boolProp>
              <objProp>
                <name>saveConfig</name>
                <value class="SampleSaveConfiguration">
                  <time>true</time>
                  <latency>true</latency>
                  <timestamp>true</timestamp>
                  <success>true</success>
                  <label>true</label>
                  <code>true</code>
                  <message>true</message>
                  <threadName>true</threadName>
                  <dataType>true</dataType>
                  <encoding>false</encoding>
                  <assertions>true</assertions>
                  <subresults>true</subresults>
                  <responseData>false</responseData>
                  <samplerData>false</samplerData>
                  <xml>false</xml>
                  <fieldNames>false</fieldNames>
                  <responseHeaders>false</responseHeaders>
                  <requestHeaders>false</requestHeaders>
                  <responseDataOnError>false</responseDataOnError>
                  <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                  <assertionsResultsToSave>0</assertionsResultsToSave>
                  <bytes>true</bytes>
                  <threadCounts>true</threadCounts>
                </value>
              </objProp>
              <stringProp name="filename"></stringProp>
            </ResultCollector>
            <hashTree/>
            <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Get entityId from Response" enabled="true">
              <stringProp name="RegexExtractor.useHeaders">false</stringProp>
              <stringProp name="RegexExtractor.refname">entityId</stringProp>
              <stringProp name="RegexExtractor.regex">&quot;value&quot;:&quot;(.+?)&quot;</stringProp>
              <stringProp name="RegexExtractor.template">$1$</stringProp>
              <stringProp name="RegexExtractor.default">0</stringProp>
              <stringProp name="RegexExtractor.match_number">1</stringProp>
            </RegexExtractor>
            <hashTree/>
            <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Log" enabled="true">
              <boolProp name="resetInterpreter">false</boolProp>
              <stringProp name="parameters"></stringProp>
              <stringProp name="filename"></stringProp>
              <stringProp name="script">String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();

props.put(&quot;EPid_P&quot;,&quot;${entityId}&quot;);

String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;
p.println(&quot;\n#######################&quot;+&quot; Create Entitlement Pool Step &quot;+&quot;#######################&quot;);
if (ResponseCode.contains(&quot;200&quot;))
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: PASS&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);
}
else
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode);
	p.println(&quot;Response Message : &quot; + ResponseMessage + &quot;\nERROR: Create REST failed.&quot;);
	p.println(&quot;Response String : &quot; + ResponseString);
}
p.println(&quot;#####################################################################\n&quot;);
p.close();f.close();</stringProp>
            </BeanShellPostProcessor>
            <hashTree/>
            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
              <stringProp name="ConstantTimer.delay">300</stringProp>
            </ConstantTimer>
            <hashTree/>
            <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Stop in case of error" enabled="true">
              <intProp name="OnError.action">1</intProp>
            </ResultAction>
            <hashTree/>
          </hashTree>
          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Entitlement Pool" enabled="true">
            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
              <collectionProp name="Arguments.arguments">
                <elementProp name="" elementType="HTTPArgument">
                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
                  <stringProp name="Argument.value"></stringProp>
                  <stringProp name="Argument.metadata">=</stringProp>
                </elementProp>
              </collectionProp>
            </elementProp>
            <stringProp name="HTTPSampler.domain">${__P(VM_controller)}</stringProp>
            <stringProp name="HTTPSampler.port">${port}</stringProp>
            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
            <stringProp name="HTTPSampler.response_timeout"></stringProp>
            <stringProp name="HTTPSampler.protocol">${protocol}</stringProp>
            <stringProp name="HTTPSampler.contentEncoding"></stringProp>
            <stringProp name="HTTPSampler.path">${__P(ASDC_prefix)}/${__P(VLM_P)}/${__P(EP)}/${__P(EPid_P)}</stringProp>
            <stringProp name="HTTPSampler.method">GET</stringProp>
            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
            <stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp>
            <boolProp name="HTTPSampler.monitor">false</boolProp>
            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
          </HTTPSamplerProxy>
          <hashTree>
            <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
              <boolProp name="ResultCollector.error_logging">false</boolProp>
              <objProp>
                <name>saveConfig</name>
                <value class="SampleSaveConfiguration">
                  <time>true</time>
                  <latency>true</latency>
                  <timestamp>true</timestamp>
                  <success>true</success>
                  <label>true</label>
                  <code>true</code>
                  <message>true</message>
                  <threadName>true</threadName>
                  <dataType>true</dataType>
                  <encoding>false</encoding>
                  <assertions>true</assertions>
                  <subresults>true</subresults>
                  <responseData>false</responseData>
                  <samplerData>false</samplerData>
                  <xml>false</xml>
                  <fieldNames>false</fieldNames>
                  <responseHeaders>false</responseHeaders>
                  <requestHeaders>false</requestHeaders>
                  <responseDataOnError>false</responseDataOnError>
                  <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                  <assertionsResultsToSave>0</assertionsResultsToSave>
                  <bytes>true</bytes>
                  <threadCounts>true</threadCounts>
                </value>
              </objProp>
              <stringProp name="filename"></stringProp>
            </ResultCollector>
            <hashTree/>
            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
              <stringProp name="ConstantTimer.delay">300</stringProp>
            </ConstantTimer>
            <hashTree/>
            <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Log" enabled="true">
              <boolProp name="resetInterpreter">false</boolProp>
              <stringProp name="parameters"></stringProp>
              <stringProp name="filename"></stringProp>
              <stringProp name="script">String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();

import org.apache.jmeter.services.FileServer;
import test.TestParse.*;

String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;

Map map = new HashMap();

map.put(&quot;name&quot;,&quot;${__P(EP_name)}&quot;);
map.put(&quot;description&quot;,&quot;${__P(EP_description)}&quot;);
//map.put(&quot;thresholdValue&quot;,props.get(&quot;EP_thresholdValue&quot;));
map.put(&quot;thresholdUnits&quot;,&quot;${__P(EP_thresholdUnits)}&quot;);
//map.put(&quot;entitlementMetric&quot;,props.get(&quot;EP_entitlementMetric&quot;));
map.put(&quot;increments&quot;,&quot;${__P(EP_increments)}&quot;);
//map.put(&quot;aggregationFunction&quot;,props.get(&quot;EP_aggregationFunction&quot;));
//map.put(&quot;operationalScope&quot;,props.get(&quot;EP_operationalScope&quot;));
//map.put(&quot;time&quot;,props.get(&quot;EP_time&quot;));
map.put(&quot;manufacturerReferenceNumber&quot;,&quot;${__P(EP_manufacturerReferenceNumber)}&quot;);

map.put(&quot;id&quot;,&quot;${__P(EPid_P)}&quot;);


DataValidation dv = new DataValidation();
String res = dv.verifyResponse(map,ResponseString);

p.println(&quot;\n#######################&quot;+&quot; Get Entitlement Pool &quot;+&quot;#######################&quot;);

if (ResponseCode.contains(&quot;200&quot;) &amp;&amp; !res.contains(&quot;FAIL&quot;))
{
	p.println(mydate + &quot; : Thread number ${__threadNum()}  in step ${__samplerName}: PASS&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);

	p.println(res);
}
else
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);

	p.println(res);
}
p.println(&quot;#####################################################################\n&quot;);

p.close();f.close();</stringProp>
            </BeanShellPostProcessor>
            <hashTree/>
            <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Stop in case of error" enabled="true">
              <intProp name="OnError.action">1</intProp>
            </ResultAction>
            <hashTree/>
          </hashTree>
        </hashTree>
        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="License Key Group" enabled="true"/>
        <hashTree>
          <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Define Test LKG Properties" enabled="true">
            <stringProp name="BeanShellSampler.query">${__eval(${__FileToString(/qa-test-repo/TestsProperties/ASDC/LKG_props.txt)})}</stringProp>
            <stringProp name="BeanShellSampler.filename"></stringProp>
            <stringProp name="BeanShellSampler.parameters"></stringProp>
            <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
          </BeanShellSampler>
          <hashTree>
            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
              <stringProp name="ConstantTimer.delay">300</stringProp>
            </ConstantTimer>
            <hashTree/>
          </hashTree>
          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create License Key Group" enabled="true">
            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
              <collectionProp name="Arguments.arguments">
                <elementProp name="" elementType="HTTPArgument">
                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
                  <stringProp name="Argument.value">${__eval(${__FileToString(/qa-test-repo/TestsProperties/ASDC/LKG_body.txt)})}</stringProp>
                  <stringProp name="Argument.metadata">=</stringProp>
                </elementProp>
              </collectionProp>
            </elementProp>
            <stringProp name="HTTPSampler.domain">${__P(VM_controller)}</stringProp>
            <stringProp name="HTTPSampler.port">${port}</stringProp>
            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
            <stringProp name="HTTPSampler.response_timeout"></stringProp>
            <stringProp name="HTTPSampler.protocol">${protocol}</stringProp>
            <stringProp name="HTTPSampler.contentEncoding"></stringProp>
            <stringProp name="HTTPSampler.path">${__P(ASDC_prefix)}/${__P(VLM_P)}/${__P(LKG)}</stringProp>
            <stringProp name="HTTPSampler.method">POST</stringProp>
            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
            <stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp>
            <boolProp name="HTTPSampler.monitor">false</boolProp>
            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
          </HTTPSamplerProxy>
          <hashTree>
            <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
              <boolProp name="ResultCollector.error_logging">false</boolProp>
              <objProp>
                <name>saveConfig</name>
                <value class="SampleSaveConfiguration">
                  <time>true</time>
                  <latency>true</latency>
                  <timestamp>true</timestamp>
                  <success>true</success>
                  <label>true</label>
                  <code>true</code>
                  <message>true</message>
                  <threadName>true</threadName>
                  <dataType>true</dataType>
                  <encoding>false</encoding>
                  <assertions>true</assertions>
                  <subresults>true</subresults>
                  <responseData>false</responseData>
                  <samplerData>false</samplerData>
                  <xml>false</xml>
                  <fieldNames>false</fieldNames>
                  <responseHeaders>false</responseHeaders>
                  <requestHeaders>false</requestHeaders>
                  <responseDataOnError>false</responseDataOnError>
                  <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                  <assertionsResultsToSave>0</assertionsResultsToSave>
                  <bytes>true</bytes>
                  <threadCounts>true</threadCounts>
                </value>
              </objProp>
              <stringProp name="filename"></stringProp>
            </ResultCollector>
            <hashTree/>
            <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Get entityId from Response" enabled="true">
              <stringProp name="RegexExtractor.useHeaders">false</stringProp>
              <stringProp name="RegexExtractor.refname">entityId</stringProp>
              <stringProp name="RegexExtractor.regex">&quot;value&quot;:&quot;(.+?)&quot;</stringProp>
              <stringProp name="RegexExtractor.template">$1$</stringProp>
              <stringProp name="RegexExtractor.default">0</stringProp>
              <stringProp name="RegexExtractor.match_number">1</stringProp>
            </RegexExtractor>
            <hashTree/>
            <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Log" enabled="true">
              <boolProp name="resetInterpreter">false</boolProp>
              <stringProp name="parameters"></stringProp>
              <stringProp name="filename"></stringProp>
              <stringProp name="script">String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();

props.put(&quot;LKGid_P&quot;,&quot;${entityId}&quot;);

String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;
p.println(&quot;\n#######################&quot;+&quot; Create License Key Group Step &quot;+&quot;#######################&quot;);
if (ResponseCode.contains(&quot;200&quot;))
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: PASS&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);
}
else
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode);
	p.println(&quot;Response Message : &quot; + ResponseMessage + &quot;\nERROR: Create REST failed.&quot;);
	p.println(&quot;Response String : &quot; + ResponseString);
}
p.println(&quot;#####################################################################\n&quot;);
p.close();f.close();</stringProp>
            </BeanShellPostProcessor>
            <hashTree/>
            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
              <stringProp name="ConstantTimer.delay">300</stringProp>
            </ConstantTimer>
            <hashTree/>
            <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Stop in case of error" enabled="true">
              <intProp name="OnError.action">1</intProp>
            </ResultAction>
            <hashTree/>
          </hashTree>
          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get License Key Group" enabled="true">
            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
              <collectionProp name="Arguments.arguments">
                <elementProp name="" elementType="HTTPArgument">
                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
                  <stringProp name="Argument.value"></stringProp>
                  <stringProp name="Argument.metadata">=</stringProp>
                </elementProp>
              </collectionProp>
            </elementProp>
            <stringProp name="HTTPSampler.domain">${__P(VM_controller)}</stringProp>
            <stringProp name="HTTPSampler.port">${port}</stringProp>
            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
            <stringProp name="HTTPSampler.response_timeout"></stringProp>
            <stringProp name="HTTPSampler.protocol">${protocol}</stringProp>
            <stringProp name="HTTPSampler.contentEncoding"></stringProp>
            <stringProp name="HTTPSampler.path">${__P(ASDC_prefix)}/${__P(VLM_P)}/${__P(LKG)}/${__P(LKGid_P)}</stringProp>
            <stringProp name="HTTPSampler.method">GET</stringProp>
            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
            <stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp>
            <boolProp name="HTTPSampler.monitor">false</boolProp>
            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
          </HTTPSamplerProxy>
          <hashTree>
            <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
              <boolProp name="ResultCollector.error_logging">false</boolProp>
              <objProp>
                <name>saveConfig</name>
                <value class="SampleSaveConfiguration">
                  <time>true</time>
                  <latency>true</latency>
                  <timestamp>true</timestamp>
                  <success>true</success>
                  <label>true</label>
                  <code>true</code>
                  <message>true</message>
                  <threadName>true</threadName>
                  <dataType>true</dataType>
                  <encoding>false</encoding>
                  <assertions>true</assertions>
                  <subresults>true</subresults>
                  <responseData>false</responseData>
                  <samplerData>false</samplerData>
                  <xml>false</xml>
                  <fieldNames>false</fieldNames>
                  <responseHeaders>false</responseHeaders>
                  <requestHeaders>false</requestHeaders>
                  <responseDataOnError>false</responseDataOnError>
                  <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                  <assertionsResultsToSave>0</assertionsResultsToSave>
                  <bytes>true</bytes>
                  <threadCounts>true</threadCounts>
                </value>
              </objProp>
              <stringProp name="filename"></stringProp>
            </ResultCollector>
            <hashTree/>
            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
              <stringProp name="ConstantTimer.delay">300</stringProp>
            </ConstantTimer>
            <hashTree/>
            <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Log" enabled="true">
              <boolProp name="resetInterpreter">false</boolProp>
              <stringProp name="parameters"></stringProp>
              <stringProp name="filename"></stringProp>
              <stringProp name="script">String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();

import org.apache.jmeter.services.FileServer;
import test.TestParse.*;

String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;

Map map = new HashMap();

map.put(&quot;name&quot;,&quot;${__P(LKG_name)}&quot;);
map.put(&quot;description&quot;,&quot;${__P(LKG_description)}&quot;);
//map.put(&quot;aggregationFunction&quot;,props.get(&quot;LKG_type&quot;));
//map.put(&quot;operationalScope&quot;,props.get(&quot;LKG_operationalScope&quot;));
map.put(&quot;id&quot;,&quot;${__P(LKGid_P)}&quot;);

DataValidation dv = new DataValidation();
String res = dv.verifyResponse(map,ResponseString);

p.println(&quot;\n#######################&quot;+&quot; Get License Key Group &quot;+&quot;#######################&quot;);

if (ResponseCode.contains(&quot;200&quot;) &amp;&amp; !res.contains(&quot;FAIL&quot;))
{
	p.println(mydate + &quot; : Thread number ${__threadNum()}  in step ${__samplerName}: PASS&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);

	p.println(res);
}
else
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);

	p.println(res);
}
p.println(&quot;#####################################################################\n&quot;);

p.close();f.close();</stringProp>
            </BeanShellPostProcessor>
            <hashTree/>
            <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Stop in case of error" enabled="true">
              <intProp name="OnError.action">1</intProp>
            </ResultAction>
            <hashTree/>
          </hashTree>
        </hashTree>
        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Feature Group" enabled="true"/>
        <hashTree>
          <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Define Test FG Properties" enabled="true">
            <stringProp name="BeanShellSampler.query">${__eval(${__FileToString(/qa-test-repo/TestsProperties/ASDC/FG_props.txt)})}</stringProp>
            <stringProp name="BeanShellSampler.filename"></stringProp>
            <stringProp name="BeanShellSampler.parameters"></stringProp>
            <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
          </BeanShellSampler>
          <hashTree>
            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
              <stringProp name="ConstantTimer.delay">300</stringProp>
            </ConstantTimer>
            <hashTree/>
          </hashTree>
          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Feature Group" enabled="true">
            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
              <collectionProp name="Arguments.arguments">
                <elementProp name="" elementType="HTTPArgument">
                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
                  <stringProp name="Argument.value">${__eval(${__FileToString(/qa-test-repo/TestsProperties/ASDC/FG_body.txt)})}</stringProp>
                  <stringProp name="Argument.metadata">=</stringProp>
                </elementProp>
              </collectionProp>
            </elementProp>
            <stringProp name="HTTPSampler.domain">${__P(VM_controller)}</stringProp>
            <stringProp name="HTTPSampler.port">${port}</stringProp>
            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
            <stringProp name="HTTPSampler.response_timeout"></stringProp>
            <stringProp name="HTTPSampler.protocol">${protocol}</stringProp>
            <stringProp name="HTTPSampler.contentEncoding"></stringProp>
            <stringProp name="HTTPSampler.path">${__P(ASDC_prefix)}/${__P(VLM_P)}/${__P(FG)}</stringProp>
            <stringProp name="HTTPSampler.method">POST</stringProp>
            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
            <stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp>
            <boolProp name="HTTPSampler.monitor">false</boolProp>
            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
          </HTTPSamplerProxy>
          <hashTree>
            <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
              <boolProp name="ResultCollector.error_logging">false</boolProp>
              <objProp>
                <name>saveConfig</name>
                <value class="SampleSaveConfiguration">
                  <time>true</time>
                  <latency>true</latency>
                  <timestamp>true</timestamp>
                  <success>true</success>
                  <label>true</label>
                  <code>true</code>
                  <message>true</message>
                  <threadName>true</threadName>
                  <dataType>true</dataType>
                  <encoding>false</encoding>
                  <assertions>true</assertions>
                  <subresults>true</subresults>
                  <responseData>false</responseData>
                  <samplerData>false</samplerData>
                  <xml>false</xml>
                  <fieldNames>false</fieldNames>
                  <responseHeaders>false</responseHeaders>
                  <requestHeaders>false</requestHeaders>
                  <responseDataOnError>false</responseDataOnError>
                  <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                  <assertionsResultsToSave>0</assertionsResultsToSave>
                  <bytes>true</bytes>
                  <threadCounts>true</threadCounts>
                </value>
              </objProp>
              <stringProp name="filename"></stringProp>
            </ResultCollector>
            <hashTree/>
            <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Get entityId from Response" enabled="true">
              <stringProp name="RegexExtractor.useHeaders">false</stringProp>
              <stringProp name="RegexExtractor.refname">entityId</stringProp>
              <stringProp name="RegexExtractor.regex">&quot;value&quot;:&quot;(.+?)&quot;</stringProp>
              <stringProp name="RegexExtractor.template">$1$</stringProp>
              <stringProp name="RegexExtractor.default">0</stringProp>
              <stringProp name="RegexExtractor.match_number">1</stringProp>
            </RegexExtractor>
            <hashTree/>
            <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Log" enabled="true">
              <boolProp name="resetInterpreter">false</boolProp>
              <stringProp name="parameters"></stringProp>
              <stringProp name="filename"></stringProp>
              <stringProp name="script">String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();

props.put(&quot;FGid_P&quot;,&quot;${entityId}&quot;);

String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;
p.println(&quot;\n#######################&quot;+&quot; Create Feature Group Step &quot;+&quot;#######################&quot;);
if (ResponseCode.contains(&quot;200&quot;))
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: PASS&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);
}
else
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode);
	p.println(&quot;Response Message : &quot; + ResponseMessage + &quot;\nERROR: Create REST failed.&quot;);
	p.println(&quot;Response String : &quot; + ResponseString);
}
p.println(&quot;#####################################################################\n&quot;);
p.close();f.close();</stringProp>
            </BeanShellPostProcessor>
            <hashTree/>
            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
              <stringProp name="ConstantTimer.delay">300</stringProp>
            </ConstantTimer>
            <hashTree/>
            <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Stop in case of error" enabled="true">
              <intProp name="OnError.action">1</intProp>
            </ResultAction>
            <hashTree/>
          </hashTree>
          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get Feature Group" enabled="true">
            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
              <collectionProp name="Arguments.arguments">
                <elementProp name="" elementType="HTTPArgument">
                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
                  <stringProp name="Argument.value"></stringProp>
                  <stringProp name="Argument.metadata">=</stringProp>
                </elementProp>
              </collectionProp>
            </elementProp>
            <stringProp name="HTTPSampler.domain">${__P(VM_controller)}</stringProp>
            <stringProp name="HTTPSampler.port">${port}</stringProp>
            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
            <stringProp name="HTTPSampler.response_timeout"></stringProp>
            <stringProp name="HTTPSampler.protocol">${protocol}</stringProp>
            <stringProp name="HTTPSampler.contentEncoding"></stringProp>
            <stringProp name="HTTPSampler.path">${__P(ASDC_prefix)}/${__P(VLM_P)}/${__P(FG)}/${__P(FGid_P)}</stringProp>
            <stringProp name="HTTPSampler.method">GET</stringProp>
            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
            <stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp>
            <boolProp name="HTTPSampler.monitor">false</boolProp>
            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
          </HTTPSamplerProxy>
          <hashTree>
            <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
              <boolProp name="ResultCollector.error_logging">false</boolProp>
              <objProp>
                <name>saveConfig</name>
                <value class="SampleSaveConfiguration">
                  <time>true</time>
                  <latency>true</latency>
                  <timestamp>true</timestamp>
                  <success>true</success>
                  <label>true</label>
                  <code>true</code>
                  <message>true</message>
                  <threadName>true</threadName>
                  <dataType>true</dataType>
                  <encoding>false</encoding>
                  <assertions>true</assertions>
                  <subresults>true</subresults>
                  <responseData>false</responseData>
                  <samplerData>false</samplerData>
                  <xml>false</xml>
                  <fieldNames>false</fieldNames>
                  <responseHeaders>false</responseHeaders>
                  <requestHeaders>false</requestHeaders>
                  <responseDataOnError>false</responseDataOnError>
                  <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                  <assertionsResultsToSave>0</assertionsResultsToSave>
                  <bytes>true</bytes>
                  <threadCounts>true</threadCounts>
                </value>
              </objProp>
              <stringProp name="filename"></stringProp>
            </ResultCollector>
            <hashTree/>
            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
              <stringProp name="ConstantTimer.delay">300</stringProp>
            </ConstantTimer>
            <hashTree/>
            <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Log" enabled="true">
              <boolProp name="resetInterpreter">false</boolProp>
              <stringProp name="parameters"></stringProp>
              <stringProp name="filename"></stringProp>
              <stringProp name="script">String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();

import org.apache.jmeter.services.FileServer;
import test.TestParse.*;

String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;

Map map = new HashMap();

map.put(&quot;name&quot;,&quot;${__P(FG_name)}&quot;);
map.put(&quot;description&quot;,&quot;${__P(FG_description)}&quot;);
map.put(&quot;partNumber&quot;,&quot;${__P(FG_partNumber)}&quot;);

map.put(&quot;id&quot;,&quot;${__P(FGid_P)}&quot;);

DataValidation dv = new DataValidation();
String res = dv.verifyResponse(map,ResponseString);

p.println(&quot;\n#######################&quot;+&quot; Get Feature Group &quot;+&quot;#######################&quot;);

if (ResponseCode.contains(&quot;200&quot;) &amp;&amp; !res.contains(&quot;FAIL&quot;))
{
	p.println(mydate + &quot; : Thread number ${__threadNum()}  in step ${__samplerName}: PASS&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);

	p.println(res);
}
else
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);

	p.println(res);
}
p.println(&quot;#####################################################################\n&quot;);

p.close();f.close();</stringProp>
            </BeanShellPostProcessor>
            <hashTree/>
            <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Stop in case of error" enabled="true">
              <intProp name="OnError.action">1</intProp>
            </ResultAction>
            <hashTree/>
          </hashTree>
        </hashTree>
        <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="License Agreement" enabled="true"/>
        <hashTree>
          <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Define Test LA Properties" enabled="true">
            <stringProp name="BeanShellSampler.query">${__eval(${__FileToString(/qa-test-repo/TestsProperties/ASDC/LA_props.txt)})}</stringProp>
            <stringProp name="BeanShellSampler.filename"></stringProp>
            <stringProp name="BeanShellSampler.parameters"></stringProp>
            <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
          </BeanShellSampler>
          <hashTree>
            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
              <stringProp name="ConstantTimer.delay">300</stringProp>
            </ConstantTimer>
            <hashTree/>
          </hashTree>
          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create License Agreement" enabled="true">
            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
              <collectionProp name="Arguments.arguments">
                <elementProp name="" elementType="HTTPArgument">
                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
                  <stringProp name="Argument.value">${__eval(${__FileToString(/qa-test-repo/TestsProperties/ASDC/LA_body.txt)})}</stringProp>
                  <stringProp name="Argument.metadata">=</stringProp>
                </elementProp>
              </collectionProp>
            </elementProp>
            <stringProp name="HTTPSampler.domain">${__P(VM_controller)}</stringProp>
            <stringProp name="HTTPSampler.port">${port}</stringProp>
            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
            <stringProp name="HTTPSampler.response_timeout"></stringProp>
            <stringProp name="HTTPSampler.protocol">${protocol}</stringProp>
            <stringProp name="HTTPSampler.contentEncoding"></stringProp>
            <stringProp name="HTTPSampler.path">${__P(ASDC_prefix)}/${__P(VLM_P)}/${__P(LA)}</stringProp>
            <stringProp name="HTTPSampler.method">POST</stringProp>
            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
            <stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp>
            <boolProp name="HTTPSampler.monitor">false</boolProp>
            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
          </HTTPSamplerProxy>
          <hashTree>
            <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
              <boolProp name="ResultCollector.error_logging">false</boolProp>
              <objProp>
                <name>saveConfig</name>
                <value class="SampleSaveConfiguration">
                  <time>true</time>
                  <latency>true</latency>
                  <timestamp>true</timestamp>
                  <success>true</success>
                  <label>true</label>
                  <code>true</code>
                  <message>true</message>
                  <threadName>true</threadName>
                  <dataType>true</dataType>
                  <encoding>false</encoding>
                  <assertions>true</assertions>
                  <subresults>true</subresults>
                  <responseData>false</responseData>
                  <samplerData>false</samplerData>
                  <xml>false</xml>
                  <fieldNames>false</fieldNames>
                  <responseHeaders>false</responseHeaders>
                  <requestHeaders>false</requestHeaders>
                  <responseDataOnError>false</responseDataOnError>
                  <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                  <assertionsResultsToSave>0</assertionsResultsToSave>
                  <bytes>true</bytes>
                  <threadCounts>true</threadCounts>
                </value>
              </objProp>
              <stringProp name="filename"></stringProp>
            </ResultCollector>
            <hashTree/>
            <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Get entityId from Response" enabled="true">
              <stringProp name="RegexExtractor.useHeaders">false</stringProp>
              <stringProp name="RegexExtractor.refname">entityId</stringProp>
              <stringProp name="RegexExtractor.regex">&quot;value&quot;:&quot;(.+?)&quot;</stringProp>
              <stringProp name="RegexExtractor.template">$1$</stringProp>
              <stringProp name="RegexExtractor.default">0</stringProp>
              <stringProp name="RegexExtractor.match_number">1</stringProp>
            </RegexExtractor>
            <hashTree/>
            <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Log" enabled="true">
              <boolProp name="resetInterpreter">false</boolProp>
              <stringProp name="parameters"></stringProp>
              <stringProp name="filename"></stringProp>
              <stringProp name="script">String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();

props.put(&quot;LAid_P&quot;,&quot;${entityId}&quot;);

String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;
p.println(&quot;\n#######################&quot;+&quot; Create License Agreement Step &quot;+&quot;#######################&quot;);
if (ResponseCode.contains(&quot;200&quot;))
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: PASS&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);
}
else
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode);
	p.println(&quot;Response Message : &quot; + ResponseMessage + &quot;\nERROR: Create REST failed.&quot;);
	p.println(&quot;Response String : &quot; + ResponseString);
}
p.println(&quot;#####################################################################\n&quot;);
p.close();f.close();</stringProp>
            </BeanShellPostProcessor>
            <hashTree/>
            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
              <stringProp name="ConstantTimer.delay">300</stringProp>
            </ConstantTimer>
            <hashTree/>
            <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Stop in case of error" enabled="true">
              <intProp name="OnError.action">1</intProp>
            </ResultAction>
            <hashTree/>
          </hashTree>
          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Get License Agreement" enabled="true">
            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
              <collectionProp name="Arguments.arguments">
                <elementProp name="" elementType="HTTPArgument">
                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
                  <stringProp name="Argument.value"></stringProp>
                  <stringProp name="Argument.metadata">=</stringProp>
                </elementProp>
              </collectionProp>
            </elementProp>
            <stringProp name="HTTPSampler.domain">${__P(VM_controller)}</stringProp>
            <stringProp name="HTTPSampler.port">${port}</stringProp>
            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
            <stringProp name="HTTPSampler.response_timeout"></stringProp>
            <stringProp name="HTTPSampler.protocol">${protocol}</stringProp>
            <stringProp name="HTTPSampler.contentEncoding"></stringProp>
            <stringProp name="HTTPSampler.path">${__P(ASDC_prefix)}/${__P(VLM_P)}/${__P(LA)}/${__P(LAid_P)}</stringProp>
            <stringProp name="HTTPSampler.method">GET</stringProp>
            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
            <stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp>
            <boolProp name="HTTPSampler.monitor">false</boolProp>
            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
          </HTTPSamplerProxy>
          <hashTree>
            <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
              <boolProp name="ResultCollector.error_logging">false</boolProp>
              <objProp>
                <name>saveConfig</name>
                <value class="SampleSaveConfiguration">
                  <time>true</time>
                  <latency>true</latency>
                  <timestamp>true</timestamp>
                  <success>true</success>
                  <label>true</label>
                  <code>true</code>
                  <message>true</message>
                  <threadName>true</threadName>
                  <dataType>true</dataType>
                  <encoding>false</encoding>
                  <assertions>true</assertions>
                  <subresults>true</subresults>
                  <responseData>false</responseData>
                  <samplerData>false</samplerData>
                  <xml>false</xml>
                  <fieldNames>false</fieldNames>
                  <responseHeaders>false</responseHeaders>
                  <requestHeaders>false</requestHeaders>
                  <responseDataOnError>false</responseDataOnError>
                  <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                  <assertionsResultsToSave>0</assertionsResultsToSave>
                  <bytes>true</bytes>
                  <threadCounts>true</threadCounts>
                </value>
              </objProp>
              <stringProp name="filename"></stringProp>
            </ResultCollector>
            <hashTree/>
            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
              <stringProp name="ConstantTimer.delay">300</stringProp>
            </ConstantTimer>
            <hashTree/>
            <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Log" enabled="true">
              <boolProp name="resetInterpreter">false</boolProp>
              <stringProp name="parameters"></stringProp>
              <stringProp name="filename"></stringProp>
              <stringProp name="script">String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();

import org.apache.jmeter.services.FileServer;
import test.TestParse.*;

String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;

Map map = new HashMap();

map.put(&quot;name&quot;,&quot;${__P(LA_name)}&quot;);
map.put(&quot;description&quot;,&quot;${__P(LA_description)}&quot;);
//map.put(&quot;licenseModelType&quot;,&quot;${LA_licenseModelType}&quot;);
map.put(&quot;requirementsAndConstrains&quot;,&quot;${__P(LA_requirementsAndConstrains)}&quot;);
map.put(&quot;id&quot;,&quot;${__P(LAid_P)}&quot;);

DataValidation dv = new DataValidation();
String res = dv.verifyResponse(map,ResponseString);

p.println(&quot;\n#######################&quot;+&quot; Get License Agreement &quot;+&quot;#######################&quot;);

if (ResponseCode.contains(&quot;200&quot;) &amp;&amp; !res.contains(&quot;FAIL&quot;))
{
	p.println(mydate + &quot; : Thread number ${__threadNum()}  in step ${__samplerName}: PASS&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);

	p.println(res);
}
else
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);

	p.println(res);
}
p.println(&quot;#####################################################################\n&quot;);

p.close();f.close();</stringProp>
            </BeanShellPostProcessor>
            <hashTree/>
            <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Stop in case of error" enabled="true">
              <intProp name="OnError.action">1</intProp>
            </ResultAction>
            <hashTree/>
          </hashTree>
        </hashTree>
        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkin VLM" enabled="true">
          <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
          <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
            <collectionProp name="Arguments.arguments">
              <elementProp name="" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">false</boolProp>
                <stringProp name="Argument.value">${__eval(${__FileToString(/qa-test-repo/TestsProperties/ASDC/Action_Checkin.txt)})}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <stringProp name="HTTPSampler.domain">${__P(VM_controller)}</stringProp>
          <stringProp name="HTTPSampler.port">${port}</stringProp>
          <stringProp name="HTTPSampler.connect_timeout"></stringProp>
          <stringProp name="HTTPSampler.response_timeout"></stringProp>
          <stringProp name="HTTPSampler.protocol">${protocol}</stringProp>
          <stringProp name="HTTPSampler.contentEncoding"></stringProp>
          <stringProp name="HTTPSampler.path">${__P(ASDC_prefix)}/${__P(VLM_P)}/actions</stringProp>
          <stringProp name="HTTPSampler.method">PUT</stringProp>
          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
          <stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp>
          <boolProp name="HTTPSampler.monitor">false</boolProp>
          <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
        </HTTPSamplerProxy>
        <hashTree>
          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
            <boolProp name="ResultCollector.error_logging">false</boolProp>
            <objProp>
              <name>saveConfig</name>
              <value class="SampleSaveConfiguration">
                <time>true</time>
                <latency>true</latency>
                <timestamp>true</timestamp>
                <success>true</success>
                <label>true</label>
                <code>true</code>
                <message>true</message>
                <threadName>true</threadName>
                <dataType>true</dataType>
                <encoding>false</encoding>
                <assertions>true</assertions>
                <subresults>true</subresults>
                <responseData>false</responseData>
                <samplerData>false</samplerData>
                <xml>false</xml>
                <fieldNames>false</fieldNames>
                <responseHeaders>false</responseHeaders>
                <requestHeaders>false</requestHeaders>
                <responseDataOnError>false</responseDataOnError>
                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                <assertionsResultsToSave>0</assertionsResultsToSave>
                <bytes>true</bytes>
                <threadCounts>true</threadCounts>
              </value>
            </objProp>
            <stringProp name="filename"></stringProp>
          </ResultCollector>
          <hashTree/>
          <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Log" enabled="true">
            <boolProp name="resetInterpreter">false</boolProp>
            <stringProp name="parameters"></stringProp>
            <stringProp name="filename"></stringProp>
            <stringProp name="script">String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();

String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;

p.println(&quot;\n#######################&quot;+&quot; Checkin VLM &quot;+&quot;#######################&quot;);

if (ResponseCode.contains(&quot;200&quot;))
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: PASS&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);
}
else
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode);
	p.println(&quot;Response Message : &quot; + ResponseMessage + &quot;\nERROR: Create VLM REST failed.&quot;);
	p.println(&quot;Response String : &quot; + ResponseString);
}

p.println(&quot;############################################################################\n&quot;);

p.close();f.close();</stringProp>
          </BeanShellPostProcessor>
          <hashTree/>
          <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
            <stringProp name="ConstantTimer.delay">300</stringProp>
          </ConstantTimer>
          <hashTree/>
          <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Stop in case of error" enabled="true">
            <intProp name="OnError.action">1</intProp>
          </ResultAction>
          <hashTree/>
        </hashTree>
        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Submit VLM" enabled="true">
          <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
          <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
            <collectionProp name="Arguments.arguments">
              <elementProp name="" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">false</boolProp>
                <stringProp name="Argument.value">${__eval(${__FileToString(/qa-test-repo/TestsProperties/ASDC/Action_Submit.txt)})}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <stringProp name="HTTPSampler.domain">${__P(VM_controller)}</stringProp>
          <stringProp name="HTTPSampler.port">${port}</stringProp>
          <stringProp name="HTTPSampler.connect_timeout"></stringProp>
          <stringProp name="HTTPSampler.response_timeout"></stringProp>
          <stringProp name="HTTPSampler.protocol">${protocol}</stringProp>
          <stringProp name="HTTPSampler.contentEncoding"></stringProp>
          <stringProp name="HTTPSampler.path">${__P(ASDC_prefix)}/${__P(VLM_P)}/actions</stringProp>
          <stringProp name="HTTPSampler.method">PUT</stringProp>
          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
          <stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp>
          <boolProp name="HTTPSampler.monitor">false</boolProp>
          <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
        </HTTPSamplerProxy>
        <hashTree>
          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
            <boolProp name="ResultCollector.error_logging">false</boolProp>
            <objProp>
              <name>saveConfig</name>
              <value class="SampleSaveConfiguration">
                <time>true</time>
                <latency>true</latency>
                <timestamp>true</timestamp>
                <success>true</success>
                <label>true</label>
                <code>true</code>
                <message>true</message>
                <threadName>true</threadName>
                <dataType>true</dataType>
                <encoding>false</encoding>
                <assertions>true</assertions>
                <subresults>true</subresults>
                <responseData>false</responseData>
                <samplerData>false</samplerData>
                <xml>false</xml>
                <fieldNames>false</fieldNames>
                <responseHeaders>false</responseHeaders>
                <requestHeaders>false</requestHeaders>
                <responseDataOnError>false</responseDataOnError>
                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                <assertionsResultsToSave>0</assertionsResultsToSave>
                <bytes>true</bytes>
                <threadCounts>true</threadCounts>
              </value>
            </objProp>
            <stringProp name="filename"></stringProp>
          </ResultCollector>
          <hashTree/>
          <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Log" enabled="true">
            <boolProp name="resetInterpreter">false</boolProp>
            <stringProp name="parameters"></stringProp>
            <stringProp name="filename"></stringProp>
            <stringProp name="script">String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();

String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;

p.println(&quot;\n#######################&quot;+&quot; Submit VLM &quot;+&quot;#######################&quot;);

if (ResponseCode.contains(&quot;200&quot;))
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: PASS&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);
}
else
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode);
	p.println(&quot;Response Message : &quot; + ResponseMessage + &quot;\nERROR: Create VLM REST failed.&quot;);
	p.println(&quot;Response String : &quot; + ResponseString);
}

p.println(&quot;############################################################################\n&quot;);

p.close();f.close();</stringProp>
          </BeanShellPostProcessor>
          <hashTree/>
          <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
            <stringProp name="ConstantTimer.delay">300</stringProp>
          </ConstantTimer>
          <hashTree/>
          <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Stop in case of error" enabled="true">
            <intProp name="OnError.action">1</intProp>
          </ResultAction>
          <hashTree/>
        </hashTree>
        <SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="Read All HEAT Files" enabled="true">
          <boolProp name="SystemSampler.checkReturnCode">false</boolProp>
          <stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
          <stringProp name="SystemSampler.command">ls</stringProp>
          <elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments"/>
          </elementProp>
          <elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments"/>
          </elementProp>
          <stringProp name="SystemSampler.directory">${fileRepo}</stringProp>
        </SystemSampler>
        <hashTree>
          <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="Save Files" enabled="true">
            <stringProp name="cacheKey"></stringProp>
            <stringProp name="filename"></stringProp>
            <stringProp name="parameters"></stringProp>
            <stringProp name="script">String ResponseString = prev.getResponseDataAsString();


String[] ActionItem = ResponseString.split(&quot;\n&quot;);
int i=1;

for( String s : ActionItem)
{
	log.info(&quot;line is : &quot; + s);
     vars.put(&quot;files&quot;+i, s);
     i++;
}

</stringProp>
            <stringProp name="scriptLanguage">beanshell</stringProp>
          </JSR223PostProcessor>
          <hashTree/>
        </hashTree>
        <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller" enabled="true">
          <stringProp name="ForeachController.inputVal">files</stringProp>
          <stringProp name="ForeachController.returnVal">index</stringProp>
          <boolProp name="ForeachController.useSeparator">false</boolProp>
        </ForeachController>
        <hashTree>
          <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Vendor Software Products" enabled="true"/>
          <hashTree>
            <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Define Test VSP Properties" enabled="true">
              <stringProp name="BeanShellSampler.query">${__eval(${__FileToString(/qa-test-repo/TestsProperties/ASDC/VSP_props.txt)})}</stringProp>
              <stringProp name="BeanShellSampler.filename"></stringProp>
              <stringProp name="BeanShellSampler.parameters"></stringProp>
              <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
            </BeanShellSampler>
            <hashTree>
              <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
                <stringProp name="ConstantTimer.delay">300</stringProp>
              </ConstantTimer>
              <hashTree/>
            </hashTree>
            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Create Vendor Software Products" enabled="true">
              <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
              <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
                <collectionProp name="Arguments.arguments">
                  <elementProp name="" elementType="HTTPArgument">
                    <boolProp name="HTTPArgument.always_encode">false</boolProp>
                    <stringProp name="Argument.value">${__eval(${__FileToString(/qa-test-repo/TestsProperties/ASDC/VSP_body.txt)})}</stringProp>
                    <stringProp name="Argument.metadata">=</stringProp>
                  </elementProp>
                </collectionProp>
              </elementProp>
              <stringProp name="HTTPSampler.domain">${__P(VM_controller)}</stringProp>
              <stringProp name="HTTPSampler.port">${port}</stringProp>
              <stringProp name="HTTPSampler.connect_timeout"></stringProp>
              <stringProp name="HTTPSampler.response_timeout"></stringProp>
              <stringProp name="HTTPSampler.protocol">${protocol}</stringProp>
              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
              <stringProp name="HTTPSampler.path">${__P(ASDC_VSP)}</stringProp>
              <stringProp name="HTTPSampler.method">POST</stringProp>
              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
              <stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp>
              <boolProp name="HTTPSampler.monitor">false</boolProp>
              <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
            </HTTPSamplerProxy>
            <hashTree>
              <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
                <boolProp name="ResultCollector.error_logging">false</boolProp>
                <objProp>
                  <name>saveConfig</name>
                  <value class="SampleSaveConfiguration">
                    <time>true</time>
                    <latency>true</latency>
                    <timestamp>true</timestamp>
                    <success>true</success>
                    <label>true</label>
                    <code>true</code>
                    <message>true</message>
                    <threadName>true</threadName>
                    <dataType>true</dataType>
                    <encoding>false</encoding>
                    <assertions>true</assertions>
                    <subresults>true</subresults>
                    <responseData>false</responseData>
                    <samplerData>false</samplerData>
                    <xml>false</xml>
                    <fieldNames>false</fieldNames>
                    <responseHeaders>false</responseHeaders>
                    <requestHeaders>false</requestHeaders>
                    <responseDataOnError>false</responseDataOnError>
                    <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                    <assertionsResultsToSave>0</assertionsResultsToSave>
                    <bytes>true</bytes>
                    <threadCounts>true</threadCounts>
                  </value>
                </objProp>
                <stringProp name="filename"></stringProp>
              </ResultCollector>
              <hashTree/>
              <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Get entityId from Response" enabled="true">
                <stringProp name="RegexExtractor.useHeaders">false</stringProp>
                <stringProp name="RegexExtractor.refname">entityId</stringProp>
                <stringProp name="RegexExtractor.regex">&quot;vspId&quot;:&quot;(.+?)&quot;</stringProp>
                <stringProp name="RegexExtractor.template">$1$</stringProp>
                <stringProp name="RegexExtractor.default">0</stringProp>
                <stringProp name="RegexExtractor.match_number">1</stringProp>
              </RegexExtractor>
              <hashTree/>
              <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Log" enabled="true">
                <boolProp name="resetInterpreter">false</boolProp>
                <stringProp name="parameters"></stringProp>
                <stringProp name="filename"></stringProp>
                <stringProp name="script">String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();

props.put(&quot;VSP_P&quot;,&quot;${entityId}&quot;);

String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;
p.println(&quot;\n#######################&quot;+&quot; Create Vendor Software Products Step &quot;+&quot;#######################&quot;);
if (ResponseCode.contains(&quot;200&quot;))
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: PASS&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);
}
else
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode);
	p.println(&quot;Response Message : &quot; + ResponseMessage + &quot;\nERROR: Create REST failed.&quot;);
	p.println(&quot;Response String : &quot; + ResponseString);
}
p.println(&quot;#####################################################################\n&quot;);
p.close();f.close();</stringProp>
              </BeanShellPostProcessor>
              <hashTree/>
              <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
                <stringProp name="ConstantTimer.delay">300</stringProp>
              </ConstantTimer>
              <hashTree/>
              <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Stop in case of error" enabled="true">
                <intProp name="OnError.action">1</intProp>
              </ResultAction>
              <hashTree/>
            </hashTree>
          </hashTree>
          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Upload ZIP file to VSP" enabled="true">
            <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs">
              <collectionProp name="HTTPFileArgs.files">
                <elementProp name="${fileRepo}${index}" elementType="HTTPFileArg">
                  <stringProp name="File.path">${fileRepo}${index}</stringProp>
                  <stringProp name="File.paramname"></stringProp>
                  <stringProp name="File.mimetype">${zip}</stringProp>
                </elementProp>
              </collectionProp>
            </elementProp>
            <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
              <collectionProp name="Arguments.arguments"/>
            </elementProp>
            <stringProp name="HTTPSampler.domain">${__P(VM_controller)}</stringProp>
            <stringProp name="HTTPSampler.port">${port}</stringProp>
            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
            <stringProp name="HTTPSampler.response_timeout"></stringProp>
            <stringProp name="HTTPSampler.protocol">${protocol}</stringProp>
            <stringProp name="HTTPSampler.contentEncoding"></stringProp>
            <stringProp name="HTTPSampler.path">${__P(ASDC_VSP)}/${__P(VSP_P)}/upload</stringProp>
            <stringProp name="HTTPSampler.method">POST</stringProp>
            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
            <boolProp name="HTTPSampler.DO_MULTIPART_POST">true</boolProp>
            <stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp>
            <boolProp name="HTTPSampler.monitor">false</boolProp>
            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
          </HTTPSamplerProxy>
          <hashTree>
            <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
              <boolProp name="ResultCollector.error_logging">false</boolProp>
              <objProp>
                <name>saveConfig</name>
                <value class="SampleSaveConfiguration">
                  <time>true</time>
                  <latency>true</latency>
                  <timestamp>true</timestamp>
                  <success>true</success>
                  <label>true</label>
                  <code>true</code>
                  <message>true</message>
                  <threadName>true</threadName>
                  <dataType>true</dataType>
                  <encoding>false</encoding>
                  <assertions>true</assertions>
                  <subresults>true</subresults>
                  <responseData>false</responseData>
                  <samplerData>false</samplerData>
                  <xml>false</xml>
                  <fieldNames>false</fieldNames>
                  <responseHeaders>false</responseHeaders>
                  <requestHeaders>false</requestHeaders>
                  <responseDataOnError>false</responseDataOnError>
                  <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                  <assertionsResultsToSave>0</assertionsResultsToSave>
                  <bytes>true</bytes>
                  <threadCounts>true</threadCounts>
                </value>
              </objProp>
              <stringProp name="filename"></stringProp>
            </ResultCollector>
            <hashTree/>
            <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Get Response status" enabled="true">
              <stringProp name="RegexExtractor.useHeaders">false</stringProp>
              <stringProp name="RegexExtractor.refname">status</stringProp>
              <stringProp name="RegexExtractor.regex">&quot;status&quot;:&quot;(.+?)&quot;</stringProp>
              <stringProp name="RegexExtractor.template">$1$</stringProp>
              <stringProp name="RegexExtractor.default">0</stringProp>
              <stringProp name="RegexExtractor.match_number">1</stringProp>
              <stringProp name="Scope.variable"></stringProp>
            </RegexExtractor>
            <hashTree/>
            <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Log" enabled="true">
              <boolProp name="resetInterpreter">false</boolProp>
              <stringProp name="parameters"></stringProp>
              <stringProp name="filename"></stringProp>
              <stringProp name="script">String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();


String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;

p.println(&quot;\n#######################&quot;+&quot; ${__samplerName} &quot;+&quot;#######################&quot;);

if (ResponseCode.contains(&quot;200&quot;) || &quot;${status}&quot;.equals(&quot;Success&quot;))
{

	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: PASS&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);

}
else
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode);
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);
}

p.println(&quot;############################################################################\n&quot;);

p.close();f.close();</stringProp>
            </BeanShellPostProcessor>
            <hashTree/>
            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
              <stringProp name="ConstantTimer.delay">300</stringProp>
            </ConstantTimer>
            <hashTree/>
            <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Stop in case of error" enabled="true">
              <intProp name="OnError.action">1</intProp>
            </ResultAction>
            <hashTree/>
          </hashTree>
          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Checkin VSP" enabled="true">
            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
              <collectionProp name="Arguments.arguments">
                <elementProp name="" elementType="HTTPArgument">
                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
                  <stringProp name="Argument.value">${__eval(${__FileToString(/qa-test-repo/TestsProperties/ASDC/Action_Checkin.txt)})}</stringProp>
                  <stringProp name="Argument.metadata">=</stringProp>
                </elementProp>
              </collectionProp>
            </elementProp>
            <stringProp name="HTTPSampler.domain">${__P(VM_controller)}</stringProp>
            <stringProp name="HTTPSampler.port">${port}</stringProp>
            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
            <stringProp name="HTTPSampler.response_timeout"></stringProp>
            <stringProp name="HTTPSampler.protocol">${protocol}</stringProp>
            <stringProp name="HTTPSampler.contentEncoding"></stringProp>
            <stringProp name="HTTPSampler.path">${__P(ASDC_VSP)}/${__P(VSP_P)}/actions</stringProp>
            <stringProp name="HTTPSampler.method">PUT</stringProp>
            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
            <stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp>
            <boolProp name="HTTPSampler.monitor">false</boolProp>
            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
          </HTTPSamplerProxy>
          <hashTree>
            <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
              <boolProp name="ResultCollector.error_logging">false</boolProp>
              <objProp>
                <name>saveConfig</name>
                <value class="SampleSaveConfiguration">
                  <time>true</time>
                  <latency>true</latency>
                  <timestamp>true</timestamp>
                  <success>true</success>
                  <label>true</label>
                  <code>true</code>
                  <message>true</message>
                  <threadName>true</threadName>
                  <dataType>true</dataType>
                  <encoding>false</encoding>
                  <assertions>true</assertions>
                  <subresults>true</subresults>
                  <responseData>false</responseData>
                  <samplerData>false</samplerData>
                  <xml>false</xml>
                  <fieldNames>false</fieldNames>
                  <responseHeaders>false</responseHeaders>
                  <requestHeaders>false</requestHeaders>
                  <responseDataOnError>false</responseDataOnError>
                  <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                  <assertionsResultsToSave>0</assertionsResultsToSave>
                  <bytes>true</bytes>
                  <threadCounts>true</threadCounts>
                </value>
              </objProp>
              <stringProp name="filename"></stringProp>
            </ResultCollector>
            <hashTree/>
            <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Log" enabled="true">
              <boolProp name="resetInterpreter">false</boolProp>
              <stringProp name="parameters"></stringProp>
              <stringProp name="filename"></stringProp>
              <stringProp name="script">String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();

String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;

p.println(&quot;\n#######################&quot;+&quot; Checkin VSP &quot;+&quot;#######################&quot;);

if (ResponseCode.contains(&quot;200&quot;))
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: PASS&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);
}
else
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode);
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);
}

p.println(&quot;############################################################################\n&quot;);

p.close();f.close();</stringProp>
            </BeanShellPostProcessor>
            <hashTree/>
            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
              <stringProp name="ConstantTimer.delay">300</stringProp>
            </ConstantTimer>
            <hashTree/>
            <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Stop in case of error" enabled="true">
              <intProp name="OnError.action">1</intProp>
            </ResultAction>
            <hashTree/>
          </hashTree>
          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Submit VSP" enabled="true">
            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
              <collectionProp name="Arguments.arguments">
                <elementProp name="" elementType="HTTPArgument">
                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
                  <stringProp name="Argument.value">${__eval(${__FileToString(/qa-test-repo/TestsProperties/ASDC/Action_Submit.txt)})}</stringProp>
                  <stringProp name="Argument.metadata">=</stringProp>
                </elementProp>
              </collectionProp>
            </elementProp>
            <stringProp name="HTTPSampler.domain">${__P(VM_controller)}</stringProp>
            <stringProp name="HTTPSampler.port">${port}</stringProp>
            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
            <stringProp name="HTTPSampler.response_timeout"></stringProp>
            <stringProp name="HTTPSampler.protocol">${protocol}</stringProp>
            <stringProp name="HTTPSampler.contentEncoding"></stringProp>
            <stringProp name="HTTPSampler.path">${__P(ASDC_VSP)}/${__P(VSP_P)}/actions</stringProp>
            <stringProp name="HTTPSampler.method">PUT</stringProp>
            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
            <stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp>
            <boolProp name="HTTPSampler.monitor">false</boolProp>
            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
          </HTTPSamplerProxy>
          <hashTree>
            <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
              <boolProp name="ResultCollector.error_logging">false</boolProp>
              <objProp>
                <name>saveConfig</name>
                <value class="SampleSaveConfiguration">
                  <time>true</time>
                  <latency>true</latency>
                  <timestamp>true</timestamp>
                  <success>true</success>
                  <label>true</label>
                  <code>true</code>
                  <message>true</message>
                  <threadName>true</threadName>
                  <dataType>true</dataType>
                  <encoding>false</encoding>
                  <assertions>true</assertions>
                  <subresults>true</subresults>
                  <responseData>false</responseData>
                  <samplerData>false</samplerData>
                  <xml>false</xml>
                  <fieldNames>false</fieldNames>
                  <responseHeaders>false</responseHeaders>
                  <requestHeaders>false</requestHeaders>
                  <responseDataOnError>false</responseDataOnError>
                  <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                  <assertionsResultsToSave>0</assertionsResultsToSave>
                  <bytes>true</bytes>
                  <threadCounts>true</threadCounts>
                </value>
              </objProp>
              <stringProp name="filename"></stringProp>
            </ResultCollector>
            <hashTree/>
            <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Log" enabled="true">
              <boolProp name="resetInterpreter">false</boolProp>
              <stringProp name="parameters"></stringProp>
              <stringProp name="filename"></stringProp>
              <stringProp name="script">String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();

String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;

p.println(&quot;\n#######################&quot;+&quot; Submit VSP &quot;+&quot;#######################&quot;);

if (!ResponseCode.contains(&quot;200&quot;))
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: PASS&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);
}
else
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode);
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);
}

p.println(&quot;############################################################################\n&quot;);

p.close();f.close();</stringProp>
            </BeanShellPostProcessor>
            <hashTree/>
            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
              <stringProp name="ConstantTimer.delay">300</stringProp>
            </ConstantTimer>
            <hashTree/>
            <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Stop in case of error" enabled="true">
              <intProp name="OnError.action">0</intProp>
            </ResultAction>
            <hashTree/>
          </hashTree>
          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Translate ZIP file" enabled="false">
            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
              <collectionProp name="Arguments.arguments">
                <elementProp name="" elementType="HTTPArgument">
                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
                  <stringProp name="Argument.value">${__eval(${__FileToString(/qa-test-repo/TestsProperties/ASDC/Action_CreatePackage.txt)})}</stringProp>
                  <stringProp name="Argument.metadata">=</stringProp>
                </elementProp>
              </collectionProp>
            </elementProp>
            <stringProp name="HTTPSampler.domain">${__P(VM_controller)}</stringProp>
            <stringProp name="HTTPSampler.port">${port}</stringProp>
            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
            <stringProp name="HTTPSampler.response_timeout"></stringProp>
            <stringProp name="HTTPSampler.protocol">${protocol}</stringProp>
            <stringProp name="HTTPSampler.contentEncoding"></stringProp>
            <stringProp name="HTTPSampler.path">${__P(ASDC_VSP)}/${__P(VSP_P)}/actions</stringProp>
            <stringProp name="HTTPSampler.method">PUT</stringProp>
            <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
            <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
            <stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp>
            <boolProp name="HTTPSampler.monitor">false</boolProp>
            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
          </HTTPSamplerProxy>
          <hashTree>
            <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
              <boolProp name="ResultCollector.error_logging">false</boolProp>
              <objProp>
                <name>saveConfig</name>
                <value class="SampleSaveConfiguration">
                  <time>true</time>
                  <latency>true</latency>
                  <timestamp>true</timestamp>
                  <success>true</success>
                  <label>true</label>
                  <code>true</code>
                  <message>true</message>
                  <threadName>true</threadName>
                  <dataType>true</dataType>
                  <encoding>false</encoding>
                  <assertions>true</assertions>
                  <subresults>true</subresults>
                  <responseData>false</responseData>
                  <samplerData>false</samplerData>
                  <xml>false</xml>
                  <fieldNames>false</fieldNames>
                  <responseHeaders>false</responseHeaders>
                  <requestHeaders>false</requestHeaders>
                  <responseDataOnError>false</responseDataOnError>
                  <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                  <assertionsResultsToSave>0</assertionsResultsToSave>
                  <bytes>true</bytes>
                  <threadCounts>true</threadCounts>
                </value>
              </objProp>
              <stringProp name="filename"></stringProp>
            </ResultCollector>
            <hashTree/>
            <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Get packageId from Response" enabled="false">
              <stringProp name="RegexExtractor.useHeaders">false</stringProp>
              <stringProp name="RegexExtractor.refname">packageId</stringProp>
              <stringProp name="RegexExtractor.regex">&quot;packageId&quot;:&quot;(.+?)&quot;</stringProp>
              <stringProp name="RegexExtractor.template">$1$</stringProp>
              <stringProp name="RegexExtractor.default">0</stringProp>
              <stringProp name="RegexExtractor.match_number">1</stringProp>
              <stringProp name="Scope.variable"></stringProp>
            </RegexExtractor>
            <hashTree/>
            <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Log" enabled="true">
              <boolProp name="resetInterpreter">false</boolProp>
              <stringProp name="parameters"></stringProp>
              <stringProp name="filename"></stringProp>
              <stringProp name="script">String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();

String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;

p.println(&quot;\n#######################&quot;+&quot; ${__samplerName} &quot;+&quot;#######################&quot;);

if (ResponseCode.contains(&quot;200&quot;))
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: PASS&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);
}
else
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode);
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);
}

p.println(&quot;############################################################################\n&quot;);

p.close();f.close();</stringProp>
            </BeanShellPostProcessor>
            <hashTree/>
            <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
              <stringProp name="ConstantTimer.delay">300</stringProp>
            </ConstantTimer>
            <hashTree/>
            <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Stop in case of error" enabled="true">
              <intProp name="OnError.action">1</intProp>
            </ResultAction>
            <hashTree/>
          </hashTree>
        </hashTree>
        <SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="Create rmp DIR to download" enabled="false">
          <boolProp name="SystemSampler.checkReturnCode">false</boolProp>
          <stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
          <stringProp name="SystemSampler.command">mkdir</stringProp>
          <elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments">
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">-p</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">/tmp/${__TestPlanName}_${__P(VSP_P)}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments"/>
          </elementProp>
          <stringProp name="SystemSampler.directory"></stringProp>
        </SystemSampler>
        <hashTree>
          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
            <boolProp name="ResultCollector.error_logging">false</boolProp>
            <objProp>
              <name>saveConfig</name>
              <value class="SampleSaveConfiguration">
                <time>true</time>
                <latency>true</latency>
                <timestamp>true</timestamp>
                <success>true</success>
                <label>true</label>
                <code>true</code>
                <message>true</message>
                <threadName>true</threadName>
                <dataType>true</dataType>
                <encoding>true</encoding>
                <assertions>true</assertions>
                <subresults>true</subresults>
                <responseData>true</responseData>
                <samplerData>true</samplerData>
                <xml>false</xml>
                <fieldNames>true</fieldNames>
                <responseHeaders>true</responseHeaders>
                <requestHeaders>true</requestHeaders>
                <responseDataOnError>false</responseDataOnError>
                <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
                <assertionsResultsToSave>0</assertionsResultsToSave>
                <bytes>true</bytes>
                <url>true</url>
                <fileName>true</fileName>
                <hostname>true</hostname>
                <threadCounts>true</threadCounts>
                <sampleCount>true</sampleCount>
                <idleTime>true</idleTime>
              </value>
            </objProp>
            <stringProp name="filename"></stringProp>
          </ResultCollector>
          <hashTree/>
        </hashTree>
        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Download Package" enabled="false">
          <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
          <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
            <collectionProp name="Arguments.arguments">
              <elementProp name="" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">false</boolProp>
                <stringProp name="Argument.value"></stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <stringProp name="HTTPSampler.domain">${__P(VM_controller)}</stringProp>
          <stringProp name="HTTPSampler.port">${port}</stringProp>
          <stringProp name="HTTPSampler.connect_timeout"></stringProp>
          <stringProp name="HTTPSampler.response_timeout"></stringProp>
          <stringProp name="HTTPSampler.protocol">${protocol}</stringProp>
          <stringProp name="HTTPSampler.contentEncoding"></stringProp>
          <stringProp name="HTTPSampler.path">${__P(ASDC_VSP)}/${__P(PKG)}/${__P(VSP_P)}</stringProp>
          <stringProp name="HTTPSampler.method">GET</stringProp>
          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
          <stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp>
          <boolProp name="HTTPSampler.monitor">false</boolProp>
          <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
        </HTTPSamplerProxy>
        <hashTree>
          <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager Main" enabled="true">
            <collectionProp name="HeaderManager.headers">
              <elementProp name="" elementType="Header">
                <stringProp name="Header.name">HTTP_CSP_ATTUID</stringProp>
                <stringProp name="Header.value">${HTTP_CSP_ATTUID}</stringProp>
              </elementProp>
              <elementProp name="" elementType="Header">
                <stringProp name="Header.name">Accept</stringProp>
                <stringProp name="Header.value">application/octet-stream</stringProp>
              </elementProp>
            </collectionProp>
            <stringProp name="TestPlan.comments">Accept - application/octet-stream</stringProp>
          </HeaderManager>
          <hashTree/>
          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
            <boolProp name="ResultCollector.error_logging">false</boolProp>
            <objProp>
              <name>saveConfig</name>
              <value class="SampleSaveConfiguration">
                <time>true</time>
                <latency>true</latency>
                <timestamp>true</timestamp>
                <success>true</success>
                <label>true</label>
                <code>true</code>
                <message>true</message>
                <threadName>true</threadName>
                <dataType>true</dataType>
                <encoding>false</encoding>
                <assertions>true</assertions>
                <subresults>true</subresults>
                <responseData>false</responseData>
                <samplerData>false</samplerData>
                <xml>false</xml>
                <fieldNames>false</fieldNames>
                <responseHeaders>false</responseHeaders>
                <requestHeaders>false</requestHeaders>
                <responseDataOnError>false</responseDataOnError>
                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                <assertionsResultsToSave>0</assertionsResultsToSave>
                <bytes>true</bytes>
                <threadCounts>true</threadCounts>
              </value>
            </objProp>
            <stringProp name="filename"></stringProp>
          </ResultCollector>
          <hashTree/>
          <ResultSaver guiclass="ResultSaverGui" testclass="ResultSaver" testname="Save Responses to a file" enabled="true">
            <stringProp name="FileSaver.filename">/tmp/${__TestPlanName}_${__P(VSP_P)}/${__P(VSP_P)}.zip</stringProp>
            <boolProp name="FileSaver.errorsonly">false</boolProp>
            <boolProp name="FileSaver.skipautonumber">true</boolProp>
            <boolProp name="FileSaver.skipsuffix">true</boolProp>
            <boolProp name="FileSaver.successonly">true</boolProp>
          </ResultSaver>
          <hashTree/>
          <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Log" enabled="true">
            <boolProp name="resetInterpreter">false</boolProp>
            <stringProp name="parameters"></stringProp>
            <stringProp name="filename"></stringProp>
            <stringProp name="script">//String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();

String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;

p.println(&quot;\n#######################&quot;+&quot; Download Package &quot;+&quot;#######################&quot;);

if (ResponseCode.contains(&quot;200&quot;))
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: PASS&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	//p.println(&quot;Response String : &quot; + ResponseString);
}
else
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode);
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	//p.println(&quot;Response String : &quot; + ResponseString);
}

p.println(&quot;############################################################################\n&quot;);

p.close();f.close();</stringProp>
          </BeanShellPostProcessor>
          <hashTree/>
          <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
            <stringProp name="ConstantTimer.delay">300</stringProp>
          </ConstantTimer>
          <hashTree/>
          <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Stop in case of error" enabled="true">
            <intProp name="OnError.action">1</intProp>
          </ResultAction>
          <hashTree/>
        </hashTree>
        <SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="Unzip the package" enabled="false">
          <boolProp name="SystemSampler.checkReturnCode">false</boolProp>
          <stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
          <stringProp name="SystemSampler.command">unzip</stringProp>
          <elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments">
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">*</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments"/>
          </elementProp>
          <stringProp name="SystemSampler.directory">/tmp/${__TestPlanName}_${__P(VSP_P)}/</stringProp>
        </SystemSampler>
        <hashTree>
          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
            <boolProp name="ResultCollector.error_logging">false</boolProp>
            <objProp>
              <name>saveConfig</name>
              <value class="SampleSaveConfiguration">
                <time>true</time>
                <latency>true</latency>
                <timestamp>true</timestamp>
                <success>true</success>
                <label>true</label>
                <code>true</code>
                <message>true</message>
                <threadName>true</threadName>
                <dataType>true</dataType>
                <encoding>true</encoding>
                <assertions>true</assertions>
                <subresults>true</subresults>
                <responseData>true</responseData>
                <samplerData>true</samplerData>
                <xml>false</xml>
                <fieldNames>true</fieldNames>
                <responseHeaders>true</responseHeaders>
                <requestHeaders>true</requestHeaders>
                <responseDataOnError>false</responseDataOnError>
                <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
                <assertionsResultsToSave>0</assertionsResultsToSave>
                <bytes>true</bytes>
                <url>true</url>
                <fileName>true</fileName>
                <hostname>true</hostname>
                <threadCounts>true</threadCounts>
                <sampleCount>true</sampleCount>
                <idleTime>true</idleTime>
              </value>
            </objProp>
            <stringProp name="filename"></stringProp>
          </ResultCollector>
          <hashTree/>
          <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
            <stringProp name="ConstantTimer.delay">300</stringProp>
          </ConstantTimer>
          <hashTree/>
        </hashTree>
        <SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="Remove ZIP file from directory" enabled="false">
          <boolProp name="SystemSampler.checkReturnCode">false</boolProp>
          <stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
          <stringProp name="SystemSampler.command">rm</stringProp>
          <elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments">
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">-rf</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">${__P(VSP_P)}.zip</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments"/>
          </elementProp>
          <stringProp name="SystemSampler.directory">/tmp/${__TestPlanName}_${__P(VSP_P)}/</stringProp>
        </SystemSampler>
        <hashTree>
          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
            <boolProp name="ResultCollector.error_logging">false</boolProp>
            <objProp>
              <name>saveConfig</name>
              <value class="SampleSaveConfiguration">
                <time>true</time>
                <latency>true</latency>
                <timestamp>true</timestamp>
                <success>true</success>
                <label>true</label>
                <code>true</code>
                <message>true</message>
                <threadName>true</threadName>
                <dataType>true</dataType>
                <encoding>true</encoding>
                <assertions>true</assertions>
                <subresults>true</subresults>
                <responseData>true</responseData>
                <samplerData>true</samplerData>
                <xml>false</xml>
                <fieldNames>true</fieldNames>
                <responseHeaders>true</responseHeaders>
                <requestHeaders>true</requestHeaders>
                <responseDataOnError>false</responseDataOnError>
                <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
                <assertionsResultsToSave>0</assertionsResultsToSave>
                <bytes>true</bytes>
                <url>true</url>
                <fileName>true</fileName>
                <hostname>true</hostname>
                <threadCounts>true</threadCounts>
                <sampleCount>true</sampleCount>
                <idleTime>true</idleTime>
              </value>
            </objProp>
            <stringProp name="filename"></stringProp>
          </ResultCollector>
          <hashTree/>
          <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
            <stringProp name="ConstantTimer.delay">300</stringProp>
          </ConstantTimer>
          <hashTree/>
        </hashTree>
        <SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="dos2unix template" enabled="false">
          <boolProp name="SystemSampler.checkReturnCode">false</boolProp>
          <stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
          <stringProp name="SystemSampler.command">bash</stringProp>
          <elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments">
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">dos2unixCall.sh</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">/qa-test-repo/TestsProperties/HEATFiles/SimpleHEATtoTOSCA</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments"/>
          </elementProp>
          <stringProp name="SystemSampler.directory">/qa-test-repo/scripts/ASDC/</stringProp>
        </SystemSampler>
        <hashTree>
          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
            <boolProp name="ResultCollector.error_logging">false</boolProp>
            <objProp>
              <name>saveConfig</name>
              <value class="SampleSaveConfiguration">
                <time>true</time>
                <latency>true</latency>
                <timestamp>true</timestamp>
                <success>true</success>
                <label>true</label>
                <code>true</code>
                <message>true</message>
                <threadName>true</threadName>
                <dataType>true</dataType>
                <encoding>true</encoding>
                <assertions>true</assertions>
                <subresults>true</subresults>
                <responseData>true</responseData>
                <samplerData>true</samplerData>
                <xml>false</xml>
                <fieldNames>true</fieldNames>
                <responseHeaders>true</responseHeaders>
                <requestHeaders>true</requestHeaders>
                <responseDataOnError>false</responseDataOnError>
                <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
                <assertionsResultsToSave>0</assertionsResultsToSave>
                <bytes>true</bytes>
                <url>true</url>
                <fileName>true</fileName>
                <hostname>true</hostname>
                <threadCounts>true</threadCounts>
                <sampleCount>true</sampleCount>
                <idleTime>true</idleTime>
              </value>
            </objProp>
            <stringProp name="filename"></stringProp>
          </ResultCollector>
          <hashTree/>
          <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
            <stringProp name="ConstantTimer.delay">300</stringProp>
          </ConstantTimer>
          <hashTree/>
        </hashTree>
        <SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="dos2unix new" enabled="false">
          <boolProp name="SystemSampler.checkReturnCode">false</boolProp>
          <stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
          <stringProp name="SystemSampler.command">bash</stringProp>
          <elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments">
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">dos2unixCall.sh</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">${__eval(/tmp/${__TestPlanName}_${__P(VSP_P)})}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments"/>
          </elementProp>
          <stringProp name="SystemSampler.directory">/qa-test-repo/scripts/ASDC/</stringProp>
        </SystemSampler>
        <hashTree>
          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
            <boolProp name="ResultCollector.error_logging">false</boolProp>
            <objProp>
              <name>saveConfig</name>
              <value class="SampleSaveConfiguration">
                <time>true</time>
                <latency>true</latency>
                <timestamp>true</timestamp>
                <success>true</success>
                <label>true</label>
                <code>true</code>
                <message>true</message>
                <threadName>true</threadName>
                <dataType>true</dataType>
                <encoding>true</encoding>
                <assertions>true</assertions>
                <subresults>true</subresults>
                <responseData>true</responseData>
                <samplerData>true</samplerData>
                <xml>false</xml>
                <fieldNames>true</fieldNames>
                <responseHeaders>true</responseHeaders>
                <requestHeaders>true</requestHeaders>
                <responseDataOnError>false</responseDataOnError>
                <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
                <assertionsResultsToSave>0</assertionsResultsToSave>
                <bytes>true</bytes>
                <url>true</url>
                <fileName>true</fileName>
                <hostname>true</hostname>
                <threadCounts>true</threadCounts>
                <sampleCount>true</sampleCount>
                <idleTime>true</idleTime>
              </value>
            </objProp>
            <stringProp name="filename"></stringProp>
          </ResultCollector>
          <hashTree/>
          <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
            <stringProp name="ConstantTimer.delay">300</stringProp>
          </ConstantTimer>
          <hashTree/>
        </hashTree>
        <SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="Diff template to test" enabled="false">
          <boolProp name="SystemSampler.checkReturnCode">false</boolProp>
          <stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
          <stringProp name="SystemSampler.command">diff</stringProp>
          <elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments">
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">-x</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">*example.xml</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">-r</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">/qa-test-repo/TestsProperties/HEATFiles/SimpleHEATtoTOSCA</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">/tmp/${__TestPlanName}_${__P(VSP_P)}</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments"/>
          </elementProp>
          <stringProp name="SystemSampler.directory"></stringProp>
          <stringProp name="TestPlan.comments">-x *example.xml</stringProp>
        </SystemSampler>
        <hashTree>
          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
            <boolProp name="ResultCollector.error_logging">false</boolProp>
            <objProp>
              <name>saveConfig</name>
              <value class="SampleSaveConfiguration">
                <time>true</time>
                <latency>true</latency>
                <timestamp>true</timestamp>
                <success>true</success>
                <label>true</label>
                <code>true</code>
                <message>true</message>
                <threadName>true</threadName>
                <dataType>true</dataType>
                <encoding>true</encoding>
                <assertions>true</assertions>
                <subresults>true</subresults>
                <responseData>true</responseData>
                <samplerData>true</samplerData>
                <xml>false</xml>
                <fieldNames>true</fieldNames>
                <responseHeaders>true</responseHeaders>
                <requestHeaders>true</requestHeaders>
                <responseDataOnError>false</responseDataOnError>
                <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
                <assertionsResultsToSave>0</assertionsResultsToSave>
                <bytes>true</bytes>
                <url>true</url>
                <fileName>true</fileName>
                <hostname>true</hostname>
                <threadCounts>true</threadCounts>
                <sampleCount>true</sampleCount>
                <idleTime>true</idleTime>
              </value>
            </objProp>
            <stringProp name="filename"></stringProp>
          </ResultCollector>
          <hashTree/>
          <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
            <boolProp name="resetInterpreter">false</boolProp>
            <stringProp name="parameters"></stringProp>
            <stringProp name="filename"></stringProp>
            <stringProp name="script">String ResponseString = prev.getResponseDataAsString();

props.put(&quot;diffOutput&quot;,ResponseString);

</stringProp>
          </BeanShellPostProcessor>
          <hashTree/>
        </hashTree>
        <SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="Read Template TOSCA" enabled="false">
          <boolProp name="SystemSampler.checkReturnCode">false</boolProp>
          <stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
          <stringProp name="SystemSampler.command">cat</stringProp>
          <elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments">
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">MainServiceTemplate.yaml</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments"/>
          </elementProp>
          <stringProp name="SystemSampler.directory">/qa-test-repo/TestsProperties/HEATFiles/SimpleHEATtoTOSCA/Definitions</stringProp>
        </SystemSampler>
        <hashTree>
          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
            <boolProp name="ResultCollector.error_logging">false</boolProp>
            <objProp>
              <name>saveConfig</name>
              <value class="SampleSaveConfiguration">
                <time>true</time>
                <latency>true</latency>
                <timestamp>true</timestamp>
                <success>true</success>
                <label>true</label>
                <code>true</code>
                <message>true</message>
                <threadName>true</threadName>
                <dataType>true</dataType>
                <encoding>true</encoding>
                <assertions>true</assertions>
                <subresults>true</subresults>
                <responseData>true</responseData>
                <samplerData>true</samplerData>
                <xml>false</xml>
                <fieldNames>true</fieldNames>
                <responseHeaders>true</responseHeaders>
                <requestHeaders>true</requestHeaders>
                <responseDataOnError>false</responseDataOnError>
                <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
                <assertionsResultsToSave>0</assertionsResultsToSave>
                <bytes>true</bytes>
                <url>true</url>
                <fileName>true</fileName>
                <hostname>true</hostname>
                <threadCounts>true</threadCounts>
                <sampleCount>true</sampleCount>
                <idleTime>true</idleTime>
              </value>
            </objProp>
            <stringProp name="filename"></stringProp>
          </ResultCollector>
          <hashTree/>
          <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
            <boolProp name="resetInterpreter">false</boolProp>
            <stringProp name="parameters"></stringProp>
            <stringProp name="filename"></stringProp>
            <stringProp name="script">String ResponseString = prev.getResponseDataAsString();

props.put(&quot;tosca1&quot;,ResponseString);

</stringProp>
          </BeanShellPostProcessor>
          <hashTree/>
        </hashTree>
        <SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="Read Translated TOSCA" enabled="false">
          <boolProp name="SystemSampler.checkReturnCode">false</boolProp>
          <stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
          <stringProp name="SystemSampler.command">cat</stringProp>
          <elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments">
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">MainServiceTemplate.yaml</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments"/>
          </elementProp>
          <stringProp name="SystemSampler.directory">/tmp/${__TestPlanName}_${__P(VSP_P)}/Definitions/</stringProp>
        </SystemSampler>
        <hashTree>
          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
            <boolProp name="ResultCollector.error_logging">false</boolProp>
            <objProp>
              <name>saveConfig</name>
              <value class="SampleSaveConfiguration">
                <time>true</time>
                <latency>true</latency>
                <timestamp>true</timestamp>
                <success>true</success>
                <label>true</label>
                <code>true</code>
                <message>true</message>
                <threadName>true</threadName>
                <dataType>true</dataType>
                <encoding>true</encoding>
                <assertions>true</assertions>
                <subresults>true</subresults>
                <responseData>true</responseData>
                <samplerData>true</samplerData>
                <xml>false</xml>
                <fieldNames>true</fieldNames>
                <responseHeaders>true</responseHeaders>
                <requestHeaders>true</requestHeaders>
                <responseDataOnError>false</responseDataOnError>
                <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
                <assertionsResultsToSave>0</assertionsResultsToSave>
                <bytes>true</bytes>
                <url>true</url>
                <fileName>true</fileName>
                <hostname>true</hostname>
                <threadCounts>true</threadCounts>
                <sampleCount>true</sampleCount>
                <idleTime>true</idleTime>
              </value>
            </objProp>
            <stringProp name="filename"></stringProp>
          </ResultCollector>
          <hashTree/>
          <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
            <boolProp name="resetInterpreter">false</boolProp>
            <stringProp name="parameters"></stringProp>
            <stringProp name="filename"></stringProp>
            <stringProp name="script">String ResponseString = prev.getResponseDataAsString();

props.put(&quot;tosca2&quot;,ResponseString);</stringProp>
          </BeanShellPostProcessor>
          <hashTree/>
        </hashTree>
        <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="Compare TOSCA files" enabled="false">
          <stringProp name="BeanShellSampler.query">
String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;

String file1 = props.get(&quot;tosca1&quot;);
String file2 = props.get(&quot;tosca2&quot;);

p.println(&quot;\n#######################&quot;+&quot; ${__samplerName} &quot;+&quot;#######################&quot;);

p.println(&quot;\n&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&quot;+&quot; diff Output: &quot;+&quot;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;\n&quot;);
if(props.get(&quot;diffOutput&quot;).equals(&quot;&quot;)){
	p.println(mydate + &quot; : No change in files&quot;);
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: PASS&quot;);
	p.println(mydate + &quot; : Files are equals!&quot;);
}else{
	p.println(mydate + &quot; : \n&quot;+props.get(&quot;diffOutput&quot;));
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(mydate + &quot; : Files are NOT equals!!!&quot;);
}
p.println(&quot;\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n&quot;);

p.println(&quot;############################################################################\n&quot;);

p.close();f.close();</stringProp>
          <stringProp name="BeanShellSampler.filename"></stringProp>
          <stringProp name="BeanShellSampler.parameters"></stringProp>
          <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
        </BeanShellSampler>
        <hashTree/>
      </hashTree>
      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Test Cleanup" enabled="true">
        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
          <boolProp name="LoopController.continue_forever">false</boolProp>
          <stringProp name="LoopController.loops">${MAIN_THREAD_GROUP_CNT}</stringProp>
        </elementProp>
        <stringProp name="ThreadGroup.num_threads">${NUM_OF_THREAD}</stringProp>
        <stringProp name="ThreadGroup.ramp_time">${TEST_DURATION}</stringProp>
        <longProp name="ThreadGroup.start_time">1422885662000</longProp>
        <longProp name="ThreadGroup.end_time">1422885662000</longProp>
        <boolProp name="ThreadGroup.scheduler">false</boolProp>
        <stringProp name="ThreadGroup.duration"></stringProp>
        <stringProp name="ThreadGroup.delay"></stringProp>
      </ThreadGroup>
      <hashTree>
        <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager Main" enabled="true">
          <collectionProp name="HeaderManager.headers">
            <elementProp name="" elementType="Header">
              <stringProp name="Header.name">Accept</stringProp>
              <stringProp name="Header.value">application/json</stringProp>
            </elementProp>
            <elementProp name="" elementType="Header">
              <stringProp name="Header.name">Content-Type</stringProp>
              <stringProp name="Header.value">application/json</stringProp>
            </elementProp>
          </collectionProp>
        </HeaderManager>
        <hashTree/>
        <SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="Delete tmp DIR" enabled="true">
          <boolProp name="SystemSampler.checkReturnCode">false</boolProp>
          <stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
          <stringProp name="SystemSampler.command">rm</stringProp>
          <elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments">
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">-rf</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
              <elementProp name="" elementType="Argument">
                <stringProp name="Argument.name"></stringProp>
                <stringProp name="Argument.value">/tmp/${__TestPlanName}_${__P(VSP_P)}/</stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments"/>
          </elementProp>
          <stringProp name="SystemSampler.directory"></stringProp>
        </SystemSampler>
        <hashTree/>
        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Delete VSP" enabled="false">
          <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
          <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
            <collectionProp name="Arguments.arguments">
              <elementProp name="" elementType="HTTPArgument">
                <boolProp name="HTTPArgument.always_encode">false</boolProp>
                <stringProp name="Argument.value"></stringProp>
                <stringProp name="Argument.metadata">=</stringProp>
              </elementProp>
            </collectionProp>
          </elementProp>
          <stringProp name="HTTPSampler.domain">${__P(VM_controller)}</stringProp>
          <stringProp name="HTTPSampler.port">${port}</stringProp>
          <stringProp name="HTTPSampler.connect_timeout"></stringProp>
          <stringProp name="HTTPSampler.response_timeout"></stringProp>
          <stringProp name="HTTPSampler.protocol">http</stringProp>
          <stringProp name="HTTPSampler.contentEncoding"></stringProp>
          <stringProp name="HTTPSampler.path">${__P(ASDC_VSP)}/${__P(vspId)}</stringProp>
          <stringProp name="HTTPSampler.method">DELETE</stringProp>
          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
          <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
          <boolProp name="HTTPSampler.monitor">false</boolProp>
          <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
        </HTTPSamplerProxy>
        <hashTree>
          <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
            <boolProp name="ResultCollector.error_logging">false</boolProp>
            <objProp>
              <name>saveConfig</name>
              <value class="SampleSaveConfiguration">
                <time>true</time>
                <latency>true</latency>
                <timestamp>true</timestamp>
                <success>true</success>
                <label>true</label>
                <code>true</code>
                <message>true</message>
                <threadName>true</threadName>
                <dataType>true</dataType>
                <encoding>false</encoding>
                <assertions>true</assertions>
                <subresults>true</subresults>
                <responseData>false</responseData>
                <samplerData>false</samplerData>
                <xml>false</xml>
                <fieldNames>false</fieldNames>
                <responseHeaders>false</responseHeaders>
                <requestHeaders>false</requestHeaders>
                <responseDataOnError>false</responseDataOnError>
                <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
                <assertionsResultsToSave>0</assertionsResultsToSave>
                <bytes>true</bytes>
                <threadCounts>true</threadCounts>
              </value>
            </objProp>
            <stringProp name="filename"></stringProp>
          </ResultCollector>
          <hashTree/>
          <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Log" enabled="true">
            <boolProp name="resetInterpreter">false</boolProp>
            <stringProp name="parameters"></stringProp>
            <stringProp name="filename"></stringProp>
            <stringProp name="script">String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();

String test_tmp_folder = &quot;/tmp/TestResult/${TestName}&quot;;
	f = new FileOutputStream(test_tmp_folder, true); 
	p = new PrintStream(f); 

mydate = &quot;${__time(dd-MM-yyyy hh:mm:ss)}&quot;;

p.println(&quot;\n#######################&quot;+&quot; Delete Temporary VSP &quot;+&quot;#######################&quot;);

if (ResponseCode.contains(&quot;200&quot;))
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: PASS&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode); 
	p.println(&quot;Response Message : &quot; + ResponseMessage);
	p.println(&quot;Response String : &quot; + ResponseString);
}
else
{
	p.println(mydate + &quot; : Thread number ${__threadNum()} in step ${__samplerName}: FAIL&quot;);
	p.println(&quot;Response Code : &quot; + ResponseCode);
	p.println(&quot;Response Message : &quot; + ResponseMessage + &quot;\nERROR: Delete VSP REST failed.&quot;);
	p.println(&quot;Response String : &quot; + ResponseString);
}

p.println(&quot;############################################################################\n&quot;);

p.close();f.close();</stringProp>
          </BeanShellPostProcessor>
          <hashTree/>
          <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
            <stringProp name="ConstantTimer.delay">300</stringProp>
          </ConstantTimer>
          <hashTree/>
          <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Stop in case of error" enabled="true">
            <intProp name="OnError.action">1</intProp>
          </ResultAction>
          <hashTree/>
        </hashTree>
      </hashTree>
      <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
        <boolProp name="ResultCollector.error_logging">false</boolProp>
        <objProp>
          <name>saveConfig</name>
          <value class="SampleSaveConfiguration">
            <time>true</time>
            <latency>true</latency>
            <timestamp>true</timestamp>
            <success>true</success>
            <label>true</label>
            <code>true</code>
            <message>true</message>
            <threadName>true</threadName>
            <dataType>true</dataType>
            <encoding>true</encoding>
            <assertions>true</assertions>
            <subresults>true</subresults>
            <responseData>true</responseData>
            <samplerData>true</samplerData>
            <xml>false</xml>
            <fieldNames>true</fieldNames>
            <responseHeaders>true</responseHeaders>
            <requestHeaders>true</requestHeaders>
            <responseDataOnError>false</responseDataOnError>
            <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
            <assertionsResultsToSave>0</assertionsResultsToSave>
            <bytes>true</bytes>
            <url>true</url>
            <fileName>true</fileName>
            <hostname>true</hostname>
            <threadCounts>true</threadCounts>
            <sampleCount>true</sampleCount>
            <idleTime>true</idleTime>
          </value>
        </objProp>
        <stringProp name="filename"></stringProp>
      </ResultCollector>
      <hashTree/>
      <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ResponseCodesPerSecondGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="Response Codes per Second" enabled="true">
        <boolProp name="ResultCollector.error_logging">false</boolProp>
        <objProp>
          <name>saveConfig</name>
          <value class="SampleSaveConfiguration">
            <time>true</time>
            <latency>true</latency>
            <timestamp>true</timestamp>
            <success>true</success>
            <label>true</label>
            <code>true</code>
            <message>true</message>
            <threadName>true</threadName>
            <dataType>true</dataType>
            <encoding>false</encoding>
            <assertions>true</assertions>
            <subresults>true</subresults>
            <responseData>false</responseData>
            <samplerData>false</samplerData>
            <xml>false</xml>
            <fieldNames>true</fieldNames>
            <responseHeaders>false</responseHeaders>
            <requestHeaders>false</requestHeaders>
            <responseDataOnError>false</responseDataOnError>
            <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
            <assertionsResultsToSave>0</assertionsResultsToSave>
            <bytes>true</bytes>
            <threadCounts>true</threadCounts>
          </value>
        </objProp>
        <stringProp name="filename">/tmp/TestResult/ResponseCodesPerSecond.jtl</stringProp>
        <longProp name="interval_grouping">1000</longProp>
        <boolProp name="graph_aggregated">false</boolProp>
        <stringProp name="include_sample_labels"></stringProp>
        <stringProp name="exclude_sample_labels"></stringProp>
        <stringProp name="start_offset"></stringProp>
        <stringProp name="end_offset"></stringProp>
        <boolProp name="include_checkbox_state">false</boolProp>
        <boolProp name="exclude_checkbox_state">false</boolProp>
      </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
      <hashTree/>
      <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ResponseTimesDistributionGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="Response Times Distribution" enabled="true">
        <boolProp name="ResultCollector.error_logging">false</boolProp>
        <objProp>
          <name>saveConfig</name>
          <value class="SampleSaveConfiguration">
            <time>true</time>
            <latency>true</latency>
            <timestamp>true</timestamp>
            <success>true</success>
            <label>true</label>
            <code>true</code>
            <message>true</message>
            <threadName>true</threadName>
            <dataType>true</dataType>
            <encoding>false</encoding>
            <assertions>true</assertions>
            <subresults>true</subresults>
            <responseData>false</responseData>
            <samplerData>false</samplerData>
            <xml>false</xml>
            <fieldNames>true</fieldNames>
            <responseHeaders>false</responseHeaders>
            <requestHeaders>false</requestHeaders>
            <responseDataOnError>false</responseDataOnError>
            <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
            <assertionsResultsToSave>0</assertionsResultsToSave>
            <bytes>true</bytes>
            <threadCounts>true</threadCounts>
          </value>
        </objProp>
        <stringProp name="filename">/tmp/TestResult/ResponseTimesDistribution.jtl</stringProp>
        <longProp name="interval_grouping">100</longProp>
        <boolProp name="graph_aggregated">false</boolProp>
        <stringProp name="include_sample_labels"></stringProp>
        <stringProp name="exclude_sample_labels"></stringProp>
        <stringProp name="start_offset"></stringProp>
        <stringProp name="end_offset"></stringProp>
        <boolProp name="include_checkbox_state">false</boolProp>
        <boolProp name="exclude_checkbox_state">false</boolProp>
      </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
      <hashTree/>
      <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ResponseTimesOverTimeGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="Response Times Over Time" enabled="true">
        <boolProp name="ResultCollector.error_logging">false</boolProp>
        <objProp>
          <name>saveConfig</name>
          <value class="SampleSaveConfiguration">
            <time>true</time>
            <latency>true</latency>
            <timestamp>true</timestamp>
            <success>true</success>
            <label>true</label>
            <code>true</code>
            <message>true</message>
            <threadName>true</threadName>
            <dataType>true</dataType>
            <encoding>false</encoding>
            <assertions>true</assertions>
            <subresults>true</subresults>
            <responseData>false</responseData>
            <samplerData>false</samplerData>
            <xml>false</xml>
            <fieldNames>true</fieldNames>
            <responseHeaders>false</responseHeaders>
            <requestHeaders>false</requestHeaders>
            <responseDataOnError>false</responseDataOnError>
            <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
            <assertionsResultsToSave>0</assertionsResultsToSave>
            <bytes>true</bytes>
            <threadCounts>true</threadCounts>
          </value>
        </objProp>
        <stringProp name="filename">/tmp/TestResult/ResponseTimesOverTime.jtl</stringProp>
        <longProp name="interval_grouping">500</longProp>
        <boolProp name="graph_aggregated">false</boolProp>
        <stringProp name="include_sample_labels"></stringProp>
        <stringProp name="exclude_sample_labels"></stringProp>
        <stringProp name="start_offset"></stringProp>
        <stringProp name="end_offset"></stringProp>
        <boolProp name="include_checkbox_state">false</boolProp>
        <boolProp name="exclude_checkbox_state">false</boolProp>
      </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
      <hashTree/>
      <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ResponseTimesPercentilesGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="Response Times Percentiles" enabled="true">
        <boolProp name="ResultCollector.error_logging">false</boolProp>
        <objProp>
          <name>saveConfig</name>
          <value class="SampleSaveConfiguration">
            <time>true</time>
            <latency>true</latency>
            <timestamp>true</timestamp>
            <success>true</success>
            <label>true</label>
            <code>true</code>
            <message>true</message>
            <threadName>true</threadName>
            <dataType>true</dataType>
            <encoding>false</encoding>
            <assertions>true</assertions>
            <subresults>true</subresults>
            <responseData>false</responseData>
            <samplerData>false</samplerData>
            <xml>false</xml>
            <fieldNames>true</fieldNames>
            <responseHeaders>false</responseHeaders>
            <requestHeaders>false</requestHeaders>
            <responseDataOnError>false</responseDataOnError>
            <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
            <assertionsResultsToSave>0</assertionsResultsToSave>
            <bytes>true</bytes>
            <threadCounts>true</threadCounts>
          </value>
        </objProp>
        <stringProp name="filename">/tmp/TestResult/ResponseTimesPercentiles.jtl</stringProp>
        <longProp name="interval_grouping">500</longProp>
        <boolProp name="graph_aggregated">false</boolProp>
        <stringProp name="include_sample_labels"></stringProp>
        <stringProp name="exclude_sample_labels"></stringProp>
        <stringProp name="start_offset"></stringProp>
        <stringProp name="end_offset"></stringProp>
        <boolProp name="include_checkbox_state">false</boolProp>
        <boolProp name="exclude_checkbox_state">false</boolProp>
      </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
      <hashTree/>
      <kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.HitsPerSecondGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="Hits per Second" enabled="true">
        <boolProp name="ResultCollector.error_logging">false</boolProp>
        <objProp>
          <name>saveConfig</name>
          <value class="SampleSaveConfiguration">
            <time>true</time>
            <latency>true</latency>
            <timestamp>true</timestamp>
            <success>true</success>
            <label>true</label>
            <code>true</code>
            <message>true</message>
            <threadName>true</threadName>
            <dataType>true</dataType>
            <encoding>false</encoding>
            <assertions>true</assertions>
            <subresults>true</subresults>
            <responseData>false</responseData>
            <samplerData>false</samplerData>
            <xml>false</xml>
            <fieldNames>true</fieldNames>
            <responseHeaders>false</responseHeaders>
            <requestHeaders>false</requestHeaders>
            <responseDataOnError>false</responseDataOnError>
            <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
            <assertionsResultsToSave>0</assertionsResultsToSave>
            <bytes>true</bytes>
            <threadCounts>true</threadCounts>
          </value>
        </objProp>
        <stringProp name="filename">/tmp/TestResult/HitsPerSecond.jtl</stringProp>
        <longProp name="interval_grouping">1000</longProp>
        <boolProp name="graph_aggregated">false</boolProp>
        <stringProp name="include_sample_labels"></stringProp>
        <stringProp name="exclude_sample_labels"></stringProp>
        <stringProp name="start_offset"></stringProp>
        <stringProp name="end_offset"></stringProp>
        <boolProp name="include_checkbox_state">false</boolProp>
        <boolProp name="exclude_checkbox_state">false</boolProp>
      </kg.apc.jmeter.vizualizers.CorrectedResultCollector>
      <hashTree/>
      <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true">
        <boolProp name="ResultCollector.error_logging">false</boolProp>
        <objProp>
          <name>saveConfig</name>
          <value class="SampleSaveConfiguration">
            <time>true</time>
            <latency>true</latency>
            <timestamp>true</timestamp>
            <success>true</success>
            <label>true</label>
            <code>true</code>
            <message>true</message>
            <threadName>true</threadName>
            <dataType>true</dataType>
            <encoding>true</encoding>
            <assertions>true</assertions>
            <subresults>true</subresults>
            <responseData>true</responseData>
            <samplerData>true</samplerData>
            <xml>true</xml>
            <fieldNames>true</fieldNames>
            <responseHeaders>true</responseHeaders>
            <requestHeaders>true</requestHeaders>
            <responseDataOnError>false</responseDataOnError>
            <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
            <assertionsResultsToSave>0</assertionsResultsToSave>
            <bytes>true</bytes>
            <url>true</url>
            <fileName>true</fileName>
            <hostname>true</hostname>
            <threadCounts>true</threadCounts>
            <sampleCount>true</sampleCount>
            <idleTime>true</idleTime>
          </value>
        </objProp>
        <stringProp name="filename">/tmp/TestResult/ResultsTable.xml</stringProp>
      </ResultCollector>
      <hashTree/>
    </hashTree>
    <WorkBench guiclass="WorkBenchGui" testclass="WorkBench" testname="WorkBench" enabled="true">
      <boolProp name="WorkBench.save">true</boolProp>
    </WorkBench>
    <hashTree>
      <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="Get Response" enabled="false">
        <stringProp name="filename"></stringProp>
        <stringProp name="parameters"></stringProp>
        <boolProp name="resetInterpreter">false</boolProp>
        <stringProp name="script">String ResponseString = prev.getResponseDataAsString();
String ResponseCode = prev.getResponseCode(); 
String ResponseMessage = prev.getResponseMessage();


vars.put(&quot;ResponseCode&quot;,ResponseCode);
vars.put(&quot;ResponseString&quot;,ResponseString);
vars.put(&quot;ResponseMessage&quot;,ResponseMessage);</stringProp>
      </BeanShellPostProcessor>
      <hashTree/>
    </hashTree>
  </hashTree>
</jmeterTestPlan>
