<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:10:28 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>FOLIO Jira</title>
    <link>https://folio-org.atlassian.net</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>1001.0.0-SNAPSHOT</version>
        <build-number>100246</build-number>
        <build-date>07-02-2024</build-date>
    </build-info>

<item>
            <title>[FOLIO-1052] Performance testing</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-1052</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;These are initial thoughts about adding performance tests to folio modules. We have done alot of work optimizing mod-inventory-storage to perform on millions of instances. We want to make sure we maintain that performance even when changes to the database / queries need to be made to support new functionality / improve existing functionality&lt;/p&gt;

&lt;p&gt;1. set up an existing environment with 3M records - each module will need to provide a way to load relevant data. for example, mod-inv-storage may use the data loader to load the harvard data with some scripts to load holdings and item info (will attach examples for that below) - i dont believe we will have too many modules managing that amount of data.&lt;br/&gt;
  a. the environment should be static - in aws, this means we can potentially create an image with our own postgres installation and the 3M records. and bring it up for testing and down when tests complete. Will need to get updated manually / custom script when schema changes are needed (this is similar to an upgrade script that should be supported by rmb modules OOTB - so this may potentially be used and exercised). but re-loading data should be done occasionally and not daily or even weekly, unless changes are needed (so this can be scripted / sql&apos;d / if needed for production - this can be additional functionality added to the module (loading data))&lt;br/&gt;
2. jmeter script template - a template that can run a GET with cql and then a random full display on the returned results - with perf configurable thresholds for each of the two request types - including avg, std, saved to csv for reference - for example, we can start with a baseline for instances based on the existing implementation - run on a per git pull request. high response times should block? the merge...&lt;br/&gt;
   a. it should take a couple of minutes to get the image up and running (unless it is always running), and running a 50-100 query sanity query file should not take more then a minute or two to run&lt;/p&gt;

&lt;p&gt;when a change to an sql / db is needed - implement the unsupported sql in the module using postgresClient select / mutate functions and if a decision is made that the functionality should be supported by rmb, add to rmb and migrate to that rmb version in next release&lt;/p&gt;

</description>
                <environment></environment>
        <key id="79563">FOLIO-1052</key>
            <summary>Performance testing</summary>
                <type id="10003" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium">Task</type>
                                            <priority id="10002" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p3.svg">P3</priority>
                        <status id="1" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/open.png" description="The issue is open and ready for the assignee to start work on it.">Open</status>
                    <statusCategory id="2" key="new" colorName="blue-gray"/>
                                    <resolution id="-1">Unresolved</resolution>
                                                        <assignee accountid="-1">Unassigned</assignee>
                                                                <reporter accountid="712020:32bb56ac-50e7-4787-b4af-ed3089d9401c">shale99</reporter>
                                    <labels>
                    </labels>
                <created>Sun, 4 Feb 2018 12:26:44 +0000</created>
                <updated>Fri, 18 Jan 2019 12:47:58 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>10</watches>
                                                                <comments>
                                                            <comment id="191236" author="712020:32bb56ac-50e7-4787-b4af-ed3089d9401c" created="Mon, 5 Feb 2018 06:57:32 +0000"  >&lt;p&gt;the attached jmeter script is a modified version of the script that can be found at 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;FOLIO-1019&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/FOLIO-1019&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Inventory performance optimization for folio-alpha&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium&quot; /&gt;
            FOLIO-1019
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf&quot;&gt;Closed&lt;/span&gt;
            &lt;/span&gt;
 &lt;br/&gt;
0. login to the target URL&lt;br/&gt;
1. it will run (in a single thread) a list of queries found in a file as a warm up phase&lt;br/&gt;
    a. it will verify that the return code was 200 for each query &lt;br/&gt;
2. it will then re-run the list of queries&lt;br/&gt;
3. for every query &lt;br/&gt;
    a. it will verify that the return code was 200&lt;br/&gt;
    b. verify that the response time was lower than the defined threshold&lt;br/&gt;
    c. will randomly pick a result from the returned json and based on the uuid request the full display&lt;br/&gt;
        i. verify that the response time for the full display is lower then the defined threshold&lt;br/&gt;
        ii. verify that the return code was 200&lt;br/&gt;
4. expose statistics &lt;br/&gt;
    a. per request&lt;br/&gt;
    b. for the entire run (std, avg...)&lt;br/&gt;
the script is generic&lt;/p&gt;

&lt;p&gt; &lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;a id=&quot;63888_thumb&quot; href=&quot;/rest/api/3/attachment/content/63888&quot; title=&quot;jmeter configuration.png&quot; file-preview-type=&quot;image&quot; file-preview-id=&quot;63888&quot; file-preview-title=&quot;jmeter configuration.png&quot;&gt;&lt;jira-attachment-thumbnail url=&quot;https://folio-org.atlassian.net/rest/api/3/attachment/thumbnail/63888?default=false&quot; jira-url=&quot;https://folio-org.atlassian.net/rest/api/3/attachment/thumbnail/63888&quot; filename=&quot;jmeter configuration.png&quot;&gt;&lt;img src=&quot;https://folio-org.atlassian.net/rest/api/3/attachment/thumbnail/63888&quot; data-attachment-name=&quot;jmeter configuration.png&quot; data-attachment-type=&quot;thumbnail&quot; data-media-services-id=&quot;ab6a612e-f771-4f5e-8126-9af200431b49&quot; data-media-services-type=&quot;file&quot; style=&quot;border: 0px solid black&quot; /&gt;&lt;/jira-attachment-thumbnail&gt;&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;

&lt;p&gt; &lt;span class=&quot;nobr&quot;&gt;&lt;a href=&quot;/rest/api/3/attachment/content/63886&quot; title=&quot;inventory_csv_with_fulldisplay_limit_offset.jmx attached to FOLIO-1052&quot; data-attachment-type=&quot;file&quot; data-attachment-name=&quot;inventory_csv_with_fulldisplay_limit_offset.jmx&quot; data-media-services-type=&quot;file&quot; data-media-services-id=&quot;e56ca4d2-6e28-482e-ae9b-6505633555dd&quot; rel=&quot;noreferrer&quot;&gt;inventory_csv_with_fulldisplay_limit_offset.jmx&lt;sup&gt;&lt;img class=&quot;rendericon&quot; src=&quot;/images/icons/link_attachment_7.gif&quot; height=&quot;7&quot; width=&quot;7&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;

&lt;p&gt; &lt;span class=&quot;nobr&quot;&gt;&lt;a href=&quot;/rest/api/3/attachment/content/63887&quot; title=&quot;inventory_queries.csv attached to FOLIO-1052&quot; data-attachment-type=&quot;file&quot; data-attachment-name=&quot;inventory_queries.csv&quot; data-media-services-type=&quot;file&quot; data-media-services-id=&quot;2001ae5e-b8ef-42f3-a1d0-900d77bd7563&quot; rel=&quot;noreferrer&quot;&gt;inventory_queries.csv&lt;sup&gt;&lt;img class=&quot;rendericon&quot; src=&quot;/images/icons/link_attachment_7.gif&quot; height=&quot;7&quot; width=&quot;7&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;

&lt;p&gt;this is an important first step and one that we can probably get out the door pretty quickly by integrating this into jenkins. we need to decide on the static environment for a specific module (for example - folio-alpha2 ) and load the data - for inventory , we are already doing this in folio-alpha - so this is basically a clone of that.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                            <attachment id="63886" name="inventory_csv_with_fulldisplay_limit_offset.jmx" size="36218" author="712020:32bb56ac-50e7-4787-b4af-ed3089d9401c" created="Mon, 5 Feb 2018 06:57:10 +0000"/>
                            <attachment id="63887" name="inventory_queries.csv" size="371" author="712020:32bb56ac-50e7-4787-b4af-ed3089d9401c" created="Mon, 5 Feb 2018 06:57:29 +0000"/>
                            <attachment id="63888" name="jmeter configuration.png" size="77064" author="712020:32bb56ac-50e7-4787-b4af-ed3089d9401c" created="Mon, 5 Feb 2018 06:56:13 +0000"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10000" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummarycf">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10057" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Development Team</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10144"><![CDATA[Core: Platform]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|hzy9pz:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    </customfields>
    </item>
</channel>
</rss>