Jmeter - How to output from JSR223 PostProcessor to HMTL reporter - jmeter

I have same variables that i want to output from: JSR223 PostProcessor
To: Jmeter HTML reporter
Is there any way to do it?

The only easy way I can think of which doesn't require amending JMeter code and report-template is to append the variable values to the parent Sampler label (name), like:
prev.setSampleLabel(prev.getSampleLabel(false) + ' | DATA as: ' + vars.get('TC_name') + ' | ' + vars.get('username') + ' | ' + vars.get('password') + ' | ' + vars.get('expecedCode'))
where prev stands for parent SampleResult, see the JavaDoc and Top 8 JMeter Java Classes You Should Be Using with Groovy article for more information

Related

Json Extractor | How to avoid initial few lines

I have json path extractor and its response (given below), using match No.-1
#..[?(#.unitName == 'Prod')].name
My Json path giving the output as
Result[0]= Jon
Result[1]= Flip
Result[2]= Athar
Result[3]= Bobby
Result[4]= Azra
Result[5]= Colton
Result[6]= Sony
.
.
.
.
Result[1000]= Maik
I want to avoid first few lines randomly for each user .
Ex : For user 1 if first three lines are randomly ignored, the output should be as follows :
Result[0]= Bobby
Result[1]= Azra
Result[2]= Colton
Result[3]= Sony
.
.
.
.
Result[997]= Maik
I tried following expressions but it doesnt work
#..[?(#.unitName == 'Prod')].name[$ {__Random (1,500)}]
OR
#..[?(#.unitName == 'Prod')].name[299]
Maybe you should try considering switching to JSON JMESPath Extractor, there you could do something like:
[?unitName=='Prod'].name | #[3:6]
More information:
JMESPath - Filters and Multiselect Lists
JMESPath - Slicing
How to Performance Test Web Services Using JMeter

Protractor subLocator piping

I am trying to use | for getting child elements using below code
parent.element(
by.xpath('.//button[normalize-space(text())="' + selector + '"] | .//*[contains(text(),"' + selector + '")]/following::button[1]')
);
but the second part doesn't consider the context. Any solution?

Ruby XML Reading from one XML and parsing into another

XPath.each( xmldoc, "//speech/speaking") do |element|
# puts element.attributes['name']
# puts element.text
File.open(file_name + "_" + element.attributes['name'] + "-" + year + ".xml", 'a+') do |f|
f.write("<speaker>" + element.attributes['name'] + "</speaker>")
f.write("<speech>" + doc.xpath('//speech/speaking').text + "</speech>" + "\n")
end
end
Hello stackoverflow I am looking for help solving a logic issue I am having with XML files. The above code creates a file with the "speakers" name and then it should place what the speaker says into that file.
The problem that I am running into is that it places ALL of the speakers into the same file. So I am thinking the problem lies here:
f.write("<speech>" + doc.xpath('//speech/speaking').text + "</speech>" + "\n")
I am hoping that someone has a better way of doing this, but the idea would be to change the above code to:
doc.xpath('//speech/speaking').text WHERE speaker == element.attributes['name']
Ultimately I would like to have each speaker in their own XML file with their own speeches.
<speaking name="Mr. FAZIO">I appreciate my friend yielding.</speaking>
The above is a sample from the XML file.
The xpath you are looking for is:
doc.xpath("//speech/speaking[#name='#{element.attributes['name']}']").text
see XPath to select Element by attribute value

how to display text in ckeditor status bar?

I just want to know how to display text in the ckeditor status bar.
At the bottom of the ckeditor displays the elements path I just want to display text in that elements path like status bar.
Foe example, when the user finds and replaces a text in the editor, I want to display to the user the number of instances replaced in the text.
Any help is useful, thanks in advance.
You can disable the elementspath plugin:
config.removePlugins = 'elementspath';
Then make a custom plugin by copying _source/plugins/elementspath to plugins/elementspath.
Then rename the directory to your custom name and change line 33 of the plugin.js file to use the new name (the CkEditor styleguide calls for all lowercase letters for plugin names):
CKEDITOR.plugins.add( 'newname',
Then add the new plugin in your config:
config.extraPlugins = 'newname';
The editor.on( 'selectionChange', function( ev ) section is where the majority of the work is done to create the content for that line. The main section is this:
html.unshift(
'<a' +
' id="', idBase, index, '"' +
' href="javascript:void(\'', name, '\')"' +
' tabindex="-1"' +
' title="', label, '"' +
( ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 ) ?
' onfocus="event.preventBubble();"' : '' ) +
' hidefocus="true" ' +
' onkeydown="return CKEDITOR.tools.callFunction(', onKeyDownHandler, ',', index, ', event );"' +
extra ,
' onclick="CKEDITOR.tools.callFunction('+ onClickHanlder, ',', index, '); return false;"',
' role="button" aria-labelledby="' + idBase + index + '_label">',
name,
'<span id="', idBase, index, '_label" class="cke_label">eee' + label + '</span>',
'rrrr</a>' );
You can modify it to display whatever content you like.
You'll need to look through the rest of the code to understand everything that's happening and make any other changes needed for your specific goals.

Is it possible to import existing SSRS reports in Visual Studio?

When upgrading a machine, we lost the Visual Studio project that was used to create SSRS reports. The Data Sources and the Reports still exist on the server however. Is there a way to re-create the VS project using what it on the SQL server? Is there a way to create a new Reporting Services project and to import existing Data Sources and Reports in it?
I believe the reports were originally created using VS 2005.
You haven't lost much.
The data sources are not much: the connection string to a database, and possibly settings for caching and authentication. These should be easily recreated.
The report definitions (.rdl files) can be downloaded for each report type, and added to a new Reporting Services project. They will need to be pointed at the newly recreated datasources, but then should be fine.
To download the report files, go to the Reporting Services Report Manager (website.) For a default instance of SQL with default install options this is http://servername/reports/ If you have admin permissions, there you can browse through the reports. Go to the properties of a given report and click the Edit... button. This will download the .rdl through your browser. (In SSRS 2008, the Edit button was changed to "Download...")
You will need to find out what version of SSRS you are running: the different versions of Business Intelligence Developer Studio (BIDS, the SSAS and SSRS version of Visual Studio) create reports for specific versions of SSRS. The reports can be upgraded, but not downgraded or deployed to an older version of SSRS.
There's now a PowerShell module that will do a nice job of this.
out-rsfoldercontent -reportserveruri http://[reportserver name]/reportserver -RsFolder /[path you'd like to export] -Destination c:\test -recurse
Adjust the parameters to suit.
https://github.com/Microsoft/ReportingServicesTools
SSRS doesn't allow you to download all reports from a report folder in 1 go...
However I found and tweaked a simple piece of SQL I found on the net which we use to great effect on our system...
This is it:-
/*
People working on SSRS are well aware that “Report Manager” does not support downloading all the report files (.rdl files) at one go out-of-box.
However take this script, alter the xxx parameters to your bits. Its works great.
If you get a HOST Error - you need to set full permission to the SQL Server Group on your DOS Dir.
on [Our_Prod_Server], this is: SQLServerMSSQLUser$NS226758$MSSQLSERVER
NOTE: You will find a RETURN; statement below, comment it out once you have altered the parameters.
*/
--Replace NULL with keywords of the ReportManager's Report Path,
--if reports from any specific path are to be downloaded
--select * from [ReportServer].[dbo].[Catalog] CL -- this gives you an idea of the Report Directories.
DECLARE #FilterReportPath AS VARCHAR(500) = 'xxx'
--Replace NULL with the keyword matching the Report File Name,
--if any specific reports are to be downloaded
DECLARE #FilterReportName AS VARCHAR(500) = ''
--Replace this path with the Server Location where you want the
--reports to be downloaded..
DECLARE #OutputPath AS VARCHAR(500) = 'C:\Users\[uuuuu]\Documents\Visual Studio 2012\Projects\Report Skeleton\[Report DIR Name]\'
--Used to prepare the dynamic query
DECLARE #TSQL AS NVARCHAR(MAX)
RETURN;
--Reset the OutputPath separator.
SET #OutputPath = REPLACE(#OutputPath,'\','/')
--Simple validation of OutputPath; this can be changed as per ones need.
IF LTRIM(RTRIM(ISNULL(#OutputPath,''))) = ''
BEGIN
SELECT 'Invalid Output Path'
END
ELSE
BEGIN
--Prepare the query for download.
/*
Please note the following points -
1. The BCP command could be modified as per ones need. E.g. Providing UserName/Password, etc.
2. Please update the SSRS Report Database name. Currently, it is set to default - [ReportServer]
3. The BCP does not create missing Directories. So, additional logic could be implemented to handle that.
4. SSRS stores the XML items (Report RDL and Data Source definitions) using the UTF-8 encoding.
It just so happens that UTF-8 Unicode strings do not NEED to have a BOM and in fact ideally would not have one.
However, you will see some report items in your SSRS that begin with a specific sequence of bytes (0xEFBBBF).
That sequence is the UTF-8 Byte Order Mark. It’s character representation is the following three characters, “”.
While it is supported, it can cause problems with the conversion to XML, so it is removed.
*/
SET #TSQL = STUFF((SELECT
';EXEC master..xp_cmdshell ''bcp " ' +
' SELECT ' +
' CONVERT(VARCHAR(MAX), ' +
' CASE ' +
' WHEN LEFT(C.Content,3) = 0xEFBBBF THEN STUFF(C.Content,1,3,'''''''') '+
' ELSE C.Content '+
' END) ' +
' FROM ' +
' [ReportServer].[dbo].[Catalog] CL ' +
' CROSS APPLY (SELECT CONVERT(VARBINARY(MAX),CL.Content) Content) C ' +
' WHERE ' +
' CL.ItemID = ''''' + CONVERT(VARCHAR(MAX), CL.ItemID) + ''''' " queryout "' + #OutputPath + '' + CL.Name + '.rdl" ' + '-T -c -x'''
FROM
[ReportServer].[dbo].[Catalog] CL
WHERE
CL.[Type] = 2 --Report
AND '/' + CL.[Path] + '/' LIKE COALESCE('%/%' + #FilterReportPath + '%/%', '/' + CL.[Path] + '/')
AND CL.Name LIKE COALESCE('%' + #FilterReportName + '%', CL.Name)
FOR XML PATH('')), 1,1,'')
--SELECT #TSQL
--Execute the Dynamic Query
EXEC SP_EXECUTESQL #TSQL
END
I used this piece of code, but I had problems with the polish characters in SSRS 2008 R2.
So I added some replaces with replace this "broken" convert:
SET #TSQL = STUFF((SELECT
';EXEC master..xp_cmdshell ''bcp " ' +
' SELECT ' +
' REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE' +
' (REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(MAX), ' +
' CASE ' +
' WHEN LEFT(C.Content,3) = 0xEFBBBF THEN STUFF(C.Content,1,3,'''''''') '+
' ELSE C.Content '+
' END), ''''Å'''', ''''l''''), ''''Ä™'''', ''''e''''), ''''l›'''', ''''s'''') '+
' , ''''ć'''', ''''c''''), ''''l¼'''', ''''z''''), ''''lš'''', ''''s'''') ' +
' , ''''ó'''', ''''o''''), ''''Ä…'''', ''''a''''), ''''l»'''', ''''Z'''') '+
' , ''''sÄ'''', ''''S''''), ''''†'''', ''''C''''), ''''l‚'''', ''''l'''') ' +
' , ''''Ó'''', ''''O''''), ''''Ę'''', ''''E''''), ''''lº'''', ''''z'''') ' +
' , ''''Ä„'''', ''''A''''), ''''l¹'''', ''''Z'''') '+
' FROM ' +
' [ReportServer].[dbo].[Catalog] CL ' +
' CROSS APPLY (SELECT CONVERT(VARBINARY(MAX),CL.Content) Content) C ' +
' WHERE ' +
' CL.ItemID = ''''' + CONVERT(VARCHAR(MAX), CL.ItemID) + ''''' " queryout "' + #OutputPath + '' + CL.Name + '.rdl" ' + '-T -c -x'''
FROM
[ReportServer].[dbo].[Catalog] CL
WHERE
CL.[Type] = 2 --Report
AND '/' + CL.[Path] + '/' LIKE COALESCE('%/%' + #FilterReportPath + '%/%', '/' + CL.[Path] + '/')
AND CL.Name LIKE COALESCE('%' + #FilterReportName + '%', CL.Name)
FOR XML PATH('')), 1,1,'')

Resources