<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://performiq.com/kb/index.php?action=history&amp;feed=atom&amp;title=Synthesizing_CreditCard_Data_for_LoadTesting</id>
	<title>Synthesizing CreditCard Data for LoadTesting - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://performiq.com/kb/index.php?action=history&amp;feed=atom&amp;title=Synthesizing_CreditCard_Data_for_LoadTesting"/>
	<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=Synthesizing_CreditCard_Data_for_LoadTesting&amp;action=history"/>
	<updated>2026-05-18T13:53:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://performiq.com/kb/index.php?title=Synthesizing_CreditCard_Data_for_LoadTesting&amp;diff=3074&amp;oldid=prev</id>
		<title>PeterHarding at 00:09, 23 May 2009</title>
		<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=Synthesizing_CreditCard_Data_for_LoadTesting&amp;diff=3074&amp;oldid=prev"/>
		<updated>2009-05-23T00:09:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:09, 23 May 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l437&quot;&gt;Line 437:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 437:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       card_no = cc_list[i]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       card_no = cc_list[i]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       user    = cc_user_map[card_no]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       user    = cc_user_map[card_no]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;aps     &lt;/del&gt;= user.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;APS&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;emp_no  &lt;/ins&gt;= user.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;EmpNo&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       name    = user.Name&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       name    = user.Name&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       name_25 = name.ljust(25)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       name_25 = name.ljust(25)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PeterHarding</name></author>
	</entry>
	<entry>
		<id>https://performiq.com/kb/index.php?title=Synthesizing_CreditCard_Data_for_LoadTesting&amp;diff=3004&amp;oldid=prev</id>
		<title>PeterHarding: /* Quick and Dirty Script to Generate AMEX Transaction Data */</title>
		<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=Synthesizing_CreditCard_Data_for_LoadTesting&amp;diff=3004&amp;oldid=prev"/>
		<updated>2009-04-02T01:07:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Quick and Dirty Script to Generate AMEX Transaction Data&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:07, 2 April 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l539&quot;&gt;Line 539:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 539:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Quick and Dirty Script to Generate &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;AMEX &lt;/del&gt;Transaction Data==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Quick and Dirty Script to Generate Transaction Data==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;An early and very simple version of the script...&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;An early and very simple version of the script...&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l546&quot;&gt;Line 546:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 546:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/usr/bin/env python&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#!/usr/bin/env python&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;EMAIL = &amp;quot;xxx@&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;xxx&lt;/del&gt;.com.au&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;EMAIL = &amp;quot;xxx@&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;performiq&lt;/ins&gt;.com.au&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;fmt_amex &lt;/del&gt;= &amp;quot;&amp;quot;&amp;quot;\&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;fmt &lt;/ins&gt;= &amp;quot;&amp;quot;&amp;quot;\&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;...&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;...&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l554&quot;&gt;Line 554:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 554:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#---------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#---------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;def &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gen_amex&lt;/del&gt;(day):&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;def &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gen_data&lt;/ins&gt;(day):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    print &amp;quot;Generating &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;CBA &lt;/del&gt;for date - %s&amp;quot; % day&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    print &amp;quot;Generating &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;data &lt;/ins&gt;for date - %s&amp;quot; % day&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    ofd = open(&amp;quot;%s.txt&amp;quot; % day, &amp;quot;w+&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    ofd = open(&amp;quot;%s.txt&amp;quot; % day, &amp;quot;w+&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    ofd.write(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;fmt_amex &lt;/del&gt;% (day, ))&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    ofd.write(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;fmt &lt;/ins&gt;% (day, ))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    ofd.close()&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    ofd.close()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l565&quot;&gt;Line 565:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 565:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;for day in dates:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;for day in dates:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gen_amex&lt;/del&gt;(day)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gen_data&lt;/ins&gt;(day)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#---------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#---------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PeterHarding</name></author>
	</entry>
	<entry>
		<id>https://performiq.com/kb/index.php?title=Synthesizing_CreditCard_Data_for_LoadTesting&amp;diff=3003&amp;oldid=prev</id>
		<title>PeterHarding: /* Synthesizing CBA Credit Card Data */</title>
		<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=Synthesizing_CreditCard_Data_for_LoadTesting&amp;diff=3003&amp;oldid=prev"/>
		<updated>2009-04-02T01:07:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Synthesizing CBA Credit Card Data&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:07, 2 April 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l140&quot;&gt;Line 140:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 140:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Synthesizing &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;CBA &lt;/del&gt;Credit Card Data=&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Synthesizing Credit Card Data=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Generate &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;CBA &lt;/del&gt;data file for import to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;SAP&lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Generate data file for import to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Application&lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Here is a script used to synthetically generate an upload data file for &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;CBA &lt;/del&gt;Credit Card data:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Here is a script used to synthetically generate an upload data file for Credit Card data:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l262&quot;&gt;Line 262:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 262:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          cost     += 5&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          cost     += 5&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       expense_block  = &amp;quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;03&lt;/del&gt;,%s,,&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;015,000,,,100,000,0,,400&lt;/del&gt;,%03.0f,%d,,&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;900,,,,901,,,,902,,,,903,,,,904,1000000,,,905,1695&lt;/del&gt;,,/\n&amp;quot; % (cc_no[i], total, tx_cnt)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       expense_block  = &amp;quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;01&lt;/ins&gt;,%s,,&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;...&lt;/ins&gt;,%03.0f,%d,,&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;...&lt;/ins&gt;,,/\n&amp;quot; % (cc_no[i], total, tx_cnt)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       expense_block += expense_lines&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       expense_block += expense_lines&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       expense_block += &amp;quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;49&lt;/del&gt;,&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1001720&lt;/del&gt;,%d/\n&amp;quot; % (tx_cnt + 2)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       expense_block += &amp;quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;99&lt;/ins&gt;,&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;...&lt;/ins&gt;,%d/\n&amp;quot; % (tx_cnt + 2)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       out.write(expense_block)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       out.write(expense_block)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l342&quot;&gt;Line 342:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 342:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#-------------------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#-------------------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Python]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Synthesizing AMEX Credit Card Data=&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Synthesizing AMEX Credit Card Data=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PeterHarding</name></author>
	</entry>
	<entry>
		<id>https://performiq.com/kb/index.php?title=Synthesizing_CreditCard_Data_for_LoadTesting&amp;diff=1797&amp;oldid=prev</id>
		<title>PeterHarding at 05:26, 17 March 2008</title>
		<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=Synthesizing_CreditCard_Data_for_LoadTesting&amp;diff=1797&amp;oldid=prev"/>
		<updated>2008-03-17T05:26:33Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://performiq.com/kb/index.php?title=Synthesizing_CreditCard_Data_for_LoadTesting&amp;amp;diff=1797&amp;amp;oldid=1796&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>PeterHarding</name></author>
	</entry>
	<entry>
		<id>https://performiq.com/kb/index.php?title=Synthesizing_CreditCard_Data_for_LoadTesting&amp;diff=1796&amp;oldid=prev</id>
		<title>PeterHarding at 05:22, 17 March 2008</title>
		<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=Synthesizing_CreditCard_Data_for_LoadTesting&amp;diff=1796&amp;oldid=prev"/>
		<updated>2008-03-17T05:22:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:22, 17 March 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l550&quot;&gt;Line 550:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 550:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt;=Synthesizing AMEX Credit Card Data&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt;=&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Synthesizing AMEX Credit Card Data=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt;==Generates AMEX data file for import to SAP&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Generates AMEX data file for import to SAP==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l744&quot;&gt;Line 744:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 744:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt;Generate AMEX Transaction Data&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Quick and Dirty Script to &lt;/ins&gt;Generate AMEX Transaction Data==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;An early and very simple version of the script...&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;An early and very simple version of the script...&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PeterHarding</name></author>
	</entry>
	<entry>
		<id>https://performiq.com/kb/index.php?title=Synthesizing_CreditCard_Data_for_LoadTesting&amp;diff=1795&amp;oldid=prev</id>
		<title>PeterHarding: New page: =Data Generation=  ==Generate a Valid Credit Card Numbers==  &lt;pre&gt; #!/usr/bin/env python # # # #-------------------------------------------------------------------------------  &quot;&quot;&quot; Generat...</title>
		<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=Synthesizing_CreditCard_Data_for_LoadTesting&amp;diff=1795&amp;oldid=prev"/>
		<updated>2008-03-17T05:21:36Z</updated>

		<summary type="html">&lt;p&gt;New page: =Data Generation=  ==Generate a Valid Credit Card Numbers==  &amp;lt;pre&amp;gt; #!/usr/bin/env python # # # #-------------------------------------------------------------------------------  &amp;quot;&amp;quot;&amp;quot; Generat...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Data Generation=&lt;br /&gt;
&lt;br /&gt;
==Generate a Valid Credit Card Numbers==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
Generate a abitrary collection of pseudo Credit card numbers which&lt;br /&gt;
satisfy the validation test&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
import random&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
prefix      = &amp;#039;1234&amp;#039;&lt;br /&gt;
max_digits  = 16&lt;br /&gt;
max_numbers = 1000&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def gen(prefix):&lt;br /&gt;
   no = prefix&lt;br /&gt;
&lt;br /&gt;
   l = list(no)&lt;br /&gt;
&lt;br /&gt;
   i = len(prefix)&lt;br /&gt;
&lt;br /&gt;
   while (i &amp;lt; (max_digits - 1)):&lt;br /&gt;
      x = random.randint(0, 9)&lt;br /&gt;
&lt;br /&gt;
      l.append(str(x))&lt;br /&gt;
      # print i, l, x&lt;br /&gt;
      i += 1&lt;br /&gt;
&lt;br /&gt;
   no = &amp;#039;&amp;#039;.join(l)&lt;br /&gt;
&lt;br /&gt;
   chk_digit = encode(no) &lt;br /&gt;
&lt;br /&gt;
   delta = 10 - chk_digit&lt;br /&gt;
&lt;br /&gt;
   if delta == 10:&lt;br /&gt;
      delta = 0&lt;br /&gt;
&lt;br /&gt;
   # print chk_digit, delta&lt;br /&gt;
&lt;br /&gt;
   l.append(str(delta))&lt;br /&gt;
&lt;br /&gt;
   no = &amp;#039;&amp;#039;.join(l)&lt;br /&gt;
&lt;br /&gt;
   return no&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def encode(no):&lt;br /&gt;
   n   = 0&lt;br /&gt;
   tot = 0&lt;br /&gt;
&lt;br /&gt;
   for i in range(len(no)):&lt;br /&gt;
      v = int(no[i])&lt;br /&gt;
&lt;br /&gt;
      if i % 2 == 0:&lt;br /&gt;
         inc = v * 2&lt;br /&gt;
         if v &amp;gt; 4:&lt;br /&gt;
	    n += 1&lt;br /&gt;
      else:&lt;br /&gt;
         inc = v&lt;br /&gt;
&lt;br /&gt;
      tot += inc&lt;br /&gt;
&lt;br /&gt;
   tot += n&lt;br /&gt;
&lt;br /&gt;
   chk = tot % 10&lt;br /&gt;
&lt;br /&gt;
   return chk&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def validate(ccnumber):&lt;br /&gt;
   cnt = 0&lt;br /&gt;
   tot = 0&lt;br /&gt;
&lt;br /&gt;
   for i in range(len(ccnumber)):&lt;br /&gt;
      val = int(ccnumber[i])&lt;br /&gt;
&lt;br /&gt;
      if i % 2 == 0:&lt;br /&gt;
         inc = val * 2&lt;br /&gt;
         if val &amp;gt; 4:&lt;br /&gt;
	    cnt += 1&lt;br /&gt;
      else:&lt;br /&gt;
         inc = val&lt;br /&gt;
&lt;br /&gt;
      tot += inc&lt;br /&gt;
&lt;br /&gt;
   tot += cnt&lt;br /&gt;
&lt;br /&gt;
   if ((tot % 10) == 0):&lt;br /&gt;
      return True&lt;br /&gt;
   else:&lt;br /&gt;
      return False&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def test():&lt;br /&gt;
   for no in nos:&lt;br /&gt;
      print no&lt;br /&gt;
&lt;br /&gt;
      if validate(no):&lt;br /&gt;
         print &amp;quot;Card number VALID&amp;quot;&lt;br /&gt;
      else:&lt;br /&gt;
         print &amp;quot;Card number INVALID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
   i = 0&lt;br /&gt;
&lt;br /&gt;
   while i &amp;lt; max_numbers:&lt;br /&gt;
      cc_no = gen(prefix)&lt;br /&gt;
      &lt;br /&gt;
      if validate(cc_no):&lt;br /&gt;
         print cc_no&lt;br /&gt;
      else:&lt;br /&gt;
         print &amp;quot;Card number %s - INVALID&amp;quot; % cc_no&lt;br /&gt;
         cc_no = None&lt;br /&gt;
&lt;br /&gt;
      if cc_no:&lt;br /&gt;
         i += 1&lt;br /&gt;
      else:&lt;br /&gt;
         pass&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Synthesizing CBA Credit Card Data=&lt;br /&gt;
&lt;br /&gt;
==Generate CBA data file for import to SAP==&lt;br /&gt;
&lt;br /&gt;
Here is a script used to synthetically generate an upload data file for CBA Credit Card data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
#&lt;br /&gt;
#---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
import os&lt;br /&gt;
import csv&lt;br /&gt;
import sys&lt;br /&gt;
import getopt&lt;br /&gt;
import random&lt;br /&gt;
import datetime&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
debug_flg     = False&lt;br /&gt;
max_flg       = False&lt;br /&gt;
random_flg    = False&lt;br /&gt;
verbose_flg   = False&lt;br /&gt;
&lt;br /&gt;
__version__   = &amp;#039;1.0.2&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
file          = None&lt;br /&gt;
&lt;br /&gt;
no_days       = 1&lt;br /&gt;
date          = datetime.datetime.today()&lt;br /&gt;
&lt;br /&gt;
dates         = [&amp;#039;070729&amp;#039;, &amp;#039;070730&amp;#039;, &amp;#039;070731&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
xcodes        = [&lt;br /&gt;
                  &amp;#039;1002220&amp;#039;, &lt;br /&gt;
                  ... &lt;br /&gt;
                  &lt;br /&gt;
                  &amp;#039;1211220&amp;#039;&lt;br /&gt;
                ]&lt;br /&gt;
&lt;br /&gt;
#----- Set up credit card transactiuon type list ---------------------&lt;br /&gt;
&lt;br /&gt;
cc_merchants = []&lt;br /&gt;
&lt;br /&gt;
cc_merchants_in  = open(&amp;quot;cc_merchants.csv&amp;quot;, &amp;quot;rb&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
reader = csv.reader(cc_merchants_in)&lt;br /&gt;
&lt;br /&gt;
for row in reader:&lt;br /&gt;
  cc_merchants.append(row)&lt;br /&gt;
&lt;br /&gt;
cc_merchants_in.close()  # Explicitly close the file *NOW*&lt;br /&gt;
&lt;br /&gt;
no_merchants = len(cc_merchants)&lt;br /&gt;
&lt;br /&gt;
#----- Set up credit card numbers in cc_no list ----------------------&lt;br /&gt;
&lt;br /&gt;
cc_no = []&lt;br /&gt;
&lt;br /&gt;
cc_in  = open(&amp;quot;cc_no.txt&amp;quot;, &amp;quot;rb&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
reader = csv.reader(cc_in)&lt;br /&gt;
&lt;br /&gt;
for row in reader:&lt;br /&gt;
  cc_no.extend(row)&lt;br /&gt;
&lt;br /&gt;
cc_in.close()  # Explicitly close the file *NOW*&lt;br /&gt;
&lt;br /&gt;
#----- Set up the file header and footer -----------------------------&lt;br /&gt;
&lt;br /&gt;
header = &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
01,xxx,xxx,%s,2004,1,,,2/&lt;br /&gt;
02,,xxx,1,%s,,AUD,2/&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
footer = &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#----- Set up the body of the file -----------------------------------&lt;br /&gt;
&lt;br /&gt;
max_no_tx =   10  # Number of transactions per CC&lt;br /&gt;
cost      = 1000  # Cost of the transaction&lt;br /&gt;
tx_id     =    0  # Number that appears in transaction description&lt;br /&gt;
&lt;br /&gt;
def write_data(date):&lt;br /&gt;
   global cost, tx_id&lt;br /&gt;
&lt;br /&gt;
   file_date    = date.strftime(&amp;quot;%y%m%d&amp;quot;)&lt;br /&gt;
   expense_date = (date - datetime.timedelta(days=1)).strftime(&amp;quot;%y%m%d&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
   print &amp;quot;Generating expense data for &amp;#039;%s&amp;#039;&amp;quot; % expense_date&lt;br /&gt;
&lt;br /&gt;
   out = open(file_date,&amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
   out.write(header % (file_date, expense_date))&lt;br /&gt;
&lt;br /&gt;
   for i in range(len(cc_no)): &lt;br /&gt;
      if random_flg:&lt;br /&gt;
         no_tx      = random.randint(0, max_no_tx)&lt;br /&gt;
      elif max_flg:&lt;br /&gt;
         no_tx      = 5&lt;br /&gt;
      else:&lt;br /&gt;
         no_tx      = 1&lt;br /&gt;
&lt;br /&gt;
      tx_cnt        = 0&lt;br /&gt;
      total         = 0.0&lt;br /&gt;
      expense_lines = &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
      while tx_cnt &amp;lt; no_tx:&lt;br /&gt;
         cost = random.weibullvariate(alpha=3.0,beta=1) * 2000.0&lt;br /&gt;
         type = cc_merchants[random.randint(0, no_merchants-1)]&lt;br /&gt;
&lt;br /&gt;
         expense_lines += &amp;quot;16,699,%.0f,,%s,,%s\n&amp;quot; % (cost, type[0], type[1])&lt;br /&gt;
&lt;br /&gt;
         total    += cost&lt;br /&gt;
         tx_cnt   += 1&lt;br /&gt;
         tx_id    += 1&lt;br /&gt;
         cost     += 5&lt;br /&gt;
&lt;br /&gt;
      expense_block  = &amp;quot;03,%s,,015,000,,,100,000,0,,400,%03.0f,%d,,900,,,,901,,,,902,,,,903,,,,904,1000000,,,905,1695,,/\n&amp;quot; % (cc_no[i], total, tx_cnt)&lt;br /&gt;
      expense_block += expense_lines&lt;br /&gt;
      expense_block += &amp;quot;49,1001720,%d/\n&amp;quot; % (tx_cnt + 2)&lt;br /&gt;
&lt;br /&gt;
      out.write(expense_block)&lt;br /&gt;
&lt;br /&gt;
   out.write(footer)&lt;br /&gt;
   out.close()&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
USAGE = &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
&lt;br /&gt;
  Usage:&lt;br /&gt;
&lt;br /&gt;
     $ ./gen_user_data.py [-d] [-v] [-f &amp;lt;filename&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def usage():&lt;br /&gt;
   sys.stderr.write(USAGE)&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def main(argv):&lt;br /&gt;
   global debug_flg&lt;br /&gt;
   global max_flg&lt;br /&gt;
   global random_flg&lt;br /&gt;
   global verbose_flg&lt;br /&gt;
   global file, date, no_days&lt;br /&gt;
&lt;br /&gt;
   #----- Process command line arguments ----------------------------&lt;br /&gt;
&lt;br /&gt;
   try:&lt;br /&gt;
      opts, args = getopt.getopt(argv, &amp;quot;dD:f:hmn:rv&amp;quot;,&lt;br /&gt;
                 [&amp;quot;date&amp;quot;, &amp;quot;debug&amp;quot;, &amp;quot;file=&amp;quot;, &amp;quot;help&amp;quot;, &amp;quot;max&amp;quot;, &amp;quot;no_days&amp;quot;, &amp;quot;random&amp;quot;, &amp;quot;verbose&amp;quot;])&lt;br /&gt;
   except getopt.GetoptError:&lt;br /&gt;
      usage()&lt;br /&gt;
      sys.exit(2)&lt;br /&gt;
   else:&lt;br /&gt;
      for opt, arg in opts:&lt;br /&gt;
         if opt in (&amp;quot;-d&amp;quot;, &amp;quot;--debug&amp;quot;):&lt;br /&gt;
            debug_flg = True&lt;br /&gt;
         elif opt in (&amp;quot;-D&amp;quot;, &amp;quot;--date&amp;quot;):&lt;br /&gt;
            target_date = arg&lt;br /&gt;
            date = datetime.datetime.strptime(target_date, &amp;quot;%Y%m%d&amp;quot;)&lt;br /&gt;
            print date&lt;br /&gt;
         elif opt in (&amp;quot;-f&amp;quot;, &amp;quot;--file&amp;quot;):&lt;br /&gt;
            logfile = arg&lt;br /&gt;
         elif opt in (&amp;quot;-h&amp;quot;, &amp;quot;--help&amp;quot;):&lt;br /&gt;
            usage()&lt;br /&gt;
            sys.exit(0)&lt;br /&gt;
         elif opt in (&amp;quot;-m&amp;quot;, &amp;quot;--max&amp;quot;):&lt;br /&gt;
            max_flg = True&lt;br /&gt;
         elif opt in (&amp;quot;-n&amp;quot;, &amp;quot;--no_days&amp;quot;):&lt;br /&gt;
            no_days = int(arg)&lt;br /&gt;
         elif opt in (&amp;quot;-r&amp;quot;, &amp;quot;--random&amp;quot;):&lt;br /&gt;
            random_flg = True&lt;br /&gt;
         elif opt in (&amp;quot;-v&amp;quot;, &amp;quot;--verbose&amp;quot;):&lt;br /&gt;
            verbose_flg = True&lt;br /&gt;
&lt;br /&gt;
   dates = []&lt;br /&gt;
&lt;br /&gt;
   for n in range(no_days):&lt;br /&gt;
      d = date - datetime.timedelta(days=n)&lt;br /&gt;
      print d.strftime(&amp;quot;%y%m%d&amp;quot;)&lt;br /&gt;
      dates.append(d)&lt;br /&gt;
&lt;br /&gt;
   # print date.strftime(&amp;quot;%y%m%d&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
   for d in dates:&lt;br /&gt;
      write_data(d)&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main(sys.argv[1:])&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generate CBA transactions==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
#&lt;br /&gt;
#---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
import os&lt;br /&gt;
import csv&lt;br /&gt;
import sys&lt;br /&gt;
import getopt&lt;br /&gt;
import random&lt;br /&gt;
import datetime&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
debug_flg     = False&lt;br /&gt;
max_flg       = False&lt;br /&gt;
random_flg    = False&lt;br /&gt;
verbose_flg   = False&lt;br /&gt;
&lt;br /&gt;
__version__   = &amp;#039;1.0.2&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
file          = None&lt;br /&gt;
&lt;br /&gt;
no_days       = 1&lt;br /&gt;
date          = datetime.datetime.today()&lt;br /&gt;
&lt;br /&gt;
dates         = [&amp;#039;070729&amp;#039;, &amp;#039;070730&amp;#039;, &amp;#039;070731&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
xcodes        = [&lt;br /&gt;
                  &amp;#039;1001720&amp;#039;, &lt;br /&gt;
                   ...&lt;br /&gt;
                  &amp;#039;1213800&amp;#039;&lt;br /&gt;
                ]&lt;br /&gt;
&lt;br /&gt;
#----- Set up credit card transactiuon type list ---------------------&lt;br /&gt;
&lt;br /&gt;
cc_merchants = []&lt;br /&gt;
&lt;br /&gt;
cc_merchants_in  = open(&amp;quot;cc_merchants.csv&amp;quot;, &amp;quot;rb&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
reader = csv.reader(cc_merchants_in)&lt;br /&gt;
&lt;br /&gt;
for row in reader:&lt;br /&gt;
  cc_merchants.append(row)&lt;br /&gt;
&lt;br /&gt;
cc_merchants_in.close()  # Explicitly close the file *NOW*&lt;br /&gt;
&lt;br /&gt;
no_merchants = len(cc_merchants)&lt;br /&gt;
&lt;br /&gt;
#----- Set up credit card numbers in cc_no list ----------------------&lt;br /&gt;
&lt;br /&gt;
cc_no = []&lt;br /&gt;
&lt;br /&gt;
cc_in  = open(&amp;quot;cc_no.txt&amp;quot;, &amp;quot;rb&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
reader = csv.reader(cc_in)&lt;br /&gt;
&lt;br /&gt;
for row in reader:&lt;br /&gt;
  cc_no.extend(row)&lt;br /&gt;
&lt;br /&gt;
cc_in.close()  # Explicitly close the file *NOW*&lt;br /&gt;
&lt;br /&gt;
#----- Set up the file header and footer -----------------------------&lt;br /&gt;
&lt;br /&gt;
header = &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
01,xxx,xxx,%s,xxx,1,,,2/&lt;br /&gt;
02,,xxx,1,%s,,AUD,2/&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
footer = &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#----- Set up the body of the file -----------------------------------&lt;br /&gt;
&lt;br /&gt;
max_no_tx =   10  # Number of transactions per CC&lt;br /&gt;
cost      = 1000  # Cost of the transaction&lt;br /&gt;
tx_id     =    0  # Number that appears in transaction description&lt;br /&gt;
&lt;br /&gt;
def write_data(date):&lt;br /&gt;
   global cost, tx_id&lt;br /&gt;
&lt;br /&gt;
   file_date    = date.strftime(&amp;quot;%y%m%d&amp;quot;)&lt;br /&gt;
   expense_date = (date - datetime.timedelta(days=1)).strftime(&amp;quot;%y%m%d&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
   print &amp;quot;Generating expense data for &amp;#039;%s&amp;#039;&amp;quot; % expense_date&lt;br /&gt;
&lt;br /&gt;
   out = open(file_date,&amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
   out.write(header % (file_date, expense_date))&lt;br /&gt;
&lt;br /&gt;
   for i in range(len(cc_no)): &lt;br /&gt;
      if random_flg:&lt;br /&gt;
         no_tx      = random.randint(0, max_no_tx)&lt;br /&gt;
      elif max_flg:&lt;br /&gt;
         no_tx      = 5&lt;br /&gt;
      else:&lt;br /&gt;
         no_tx      = 1&lt;br /&gt;
&lt;br /&gt;
      tx_cnt        = 0&lt;br /&gt;
      total         = 0.0&lt;br /&gt;
      expense_lines = &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
      while tx_cnt &amp;lt; no_tx:&lt;br /&gt;
         cost = random.weibullvariate(alpha=3.0,beta=1) * 2000.0&lt;br /&gt;
         type = cc_merchants[random.randint(0, no_merchants-1)]&lt;br /&gt;
&lt;br /&gt;
         expense_lines += &amp;quot;16,699,%.0f,,%s,,%s\n&amp;quot; % (cost, type[0], type[1])&lt;br /&gt;
&lt;br /&gt;
         total    += cost&lt;br /&gt;
         tx_cnt   += 1&lt;br /&gt;
         tx_id    += 1&lt;br /&gt;
         cost     += 5&lt;br /&gt;
&lt;br /&gt;
      expense_block  = &amp;quot;03,%s,,015,000,,,100,000,0,,400,%03.0f,%d,,900,,,,901,,,,902,,,,903,,,,904,1000000,,,905,1695,,/\n&amp;quot; % (cc_no[i], total, tx_cnt)&lt;br /&gt;
      expense_block += expense_lines&lt;br /&gt;
      expense_block += &amp;quot;49,1001720,%d/\n&amp;quot; % (tx_cnt + 2)&lt;br /&gt;
&lt;br /&gt;
      out.write(expense_block)&lt;br /&gt;
&lt;br /&gt;
   out.write(footer)&lt;br /&gt;
   out.close()&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
USAGE = &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
&lt;br /&gt;
  Usage:&lt;br /&gt;
&lt;br /&gt;
     $ ./gen_user_data.py [-d] [-v] [-f &amp;lt;filename&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def usage():&lt;br /&gt;
   sys.stderr.write(USAGE)&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def main(argv):&lt;br /&gt;
   global debug_flg&lt;br /&gt;
   global max_flg&lt;br /&gt;
   global random_flg&lt;br /&gt;
   global verbose_flg&lt;br /&gt;
   global file, date, no_days&lt;br /&gt;
&lt;br /&gt;
   #----- Process command line arguments ----------------------------&lt;br /&gt;
&lt;br /&gt;
   try:&lt;br /&gt;
      opts, args = getopt.getopt(argv, &amp;quot;dD:f:hmn:rv&amp;quot;,&lt;br /&gt;
                 [&amp;quot;date&amp;quot;, &amp;quot;debug&amp;quot;, &amp;quot;file=&amp;quot;, &amp;quot;help&amp;quot;, &amp;quot;max&amp;quot;, &amp;quot;no_days&amp;quot;, &amp;quot;random&amp;quot;, &amp;quot;verbose&amp;quot;])&lt;br /&gt;
   except getopt.GetoptError:&lt;br /&gt;
      usage()&lt;br /&gt;
      sys.exit(2)&lt;br /&gt;
   else:&lt;br /&gt;
      for opt, arg in opts:&lt;br /&gt;
         if opt in (&amp;quot;-d&amp;quot;, &amp;quot;--debug&amp;quot;):&lt;br /&gt;
            debug_flg = True&lt;br /&gt;
         elif opt in (&amp;quot;-D&amp;quot;, &amp;quot;--date&amp;quot;):&lt;br /&gt;
            target_date = arg&lt;br /&gt;
            date = datetime.datetime.strptime(target_date, &amp;quot;%Y%m%d&amp;quot;)&lt;br /&gt;
            print date&lt;br /&gt;
         elif opt in (&amp;quot;-f&amp;quot;, &amp;quot;--file&amp;quot;):&lt;br /&gt;
            logfile = arg&lt;br /&gt;
         elif opt in (&amp;quot;-h&amp;quot;, &amp;quot;--help&amp;quot;):&lt;br /&gt;
            usage()&lt;br /&gt;
            sys.exit(0)&lt;br /&gt;
         elif opt in (&amp;quot;-m&amp;quot;, &amp;quot;--max&amp;quot;):&lt;br /&gt;
            max_flg = True&lt;br /&gt;
         elif opt in (&amp;quot;-n&amp;quot;, &amp;quot;--no_days&amp;quot;):&lt;br /&gt;
            no_days = int(arg)&lt;br /&gt;
         elif opt in (&amp;quot;-r&amp;quot;, &amp;quot;--random&amp;quot;):&lt;br /&gt;
            random_flg = True&lt;br /&gt;
         elif opt in (&amp;quot;-v&amp;quot;, &amp;quot;--verbose&amp;quot;):&lt;br /&gt;
            verbose_flg = True&lt;br /&gt;
&lt;br /&gt;
   dates = []&lt;br /&gt;
&lt;br /&gt;
   for n in range(no_days):&lt;br /&gt;
      d = date - datetime.timedelta(days=n)&lt;br /&gt;
      print d.strftime(&amp;quot;%y%m%d&amp;quot;)&lt;br /&gt;
      dates.append(d)&lt;br /&gt;
&lt;br /&gt;
   # print date.strftime(&amp;quot;%y%m%d&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
   for d in dates:&lt;br /&gt;
      write_data(d)&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main(sys.argv[1:])&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Synthesizing AMEX Credit Card Data==&lt;br /&gt;
&lt;br /&gt;
===Generates AMEX data file for import to SAP===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
#------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
import csv&lt;br /&gt;
import sys&lt;br /&gt;
import getopt&lt;br /&gt;
import random&lt;br /&gt;
&lt;br /&gt;
#----- Define globals ---------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
debug_flg   = False&lt;br /&gt;
verbose_flg = False&lt;br /&gt;
&lt;br /&gt;
max_no_tx   =    3  # Number of transactions to be created per CC&lt;br /&gt;
&lt;br /&gt;
users         = []&lt;br /&gt;
cc_user_map   = {}&lt;br /&gt;
&lt;br /&gt;
#----- Setup header, footer and body format strings ---------------------&lt;br /&gt;
&lt;br /&gt;
header  = &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
body_1 = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
body_2 = &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#===== Define classes ===================================================&lt;br /&gt;
&lt;br /&gt;
class User:&lt;br /&gt;
   pass&lt;br /&gt;
&lt;br /&gt;
   def __init__(self, csv):&lt;br /&gt;
      self.UserId           = csv[0]&lt;br /&gt;
      self.APS              = csv[0]&lt;br /&gt;
      self.CostCenter       = csv[1]&lt;br /&gt;
      self.CreditCardNumber = csv[2]&lt;br /&gt;
      self.Name             = &amp;#039;tester&amp;#039;&lt;br /&gt;
&lt;br /&gt;
#===== Define functions =================================================&lt;br /&gt;
#----- Read in user data and set up credit card numbers in cc_no list ---&lt;br /&gt;
&lt;br /&gt;
def read_user_data():&lt;br /&gt;
   users_in  = open(&amp;quot;users.dat&amp;quot;, &amp;quot;rb&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
   reader    = csv.reader(users_in)&lt;br /&gt;
&lt;br /&gt;
   for row in reader:&lt;br /&gt;
     user                               = User(row)&lt;br /&gt;
     users.append(user)&lt;br /&gt;
     cc_user_map[user.CreditCardNumber] = user&lt;br /&gt;
&lt;br /&gt;
   users_in.close()  &lt;br /&gt;
&lt;br /&gt;
#----- Now create a sorted list of keys to the cc catalog ---------------&lt;br /&gt;
&lt;br /&gt;
def gen_cc_list():&lt;br /&gt;
   global cc_list&lt;br /&gt;
&lt;br /&gt;
   cc_list  = cc_user_map.keys()&lt;br /&gt;
&lt;br /&gt;
   cc_list.sort()   # cc_list is *NOW* a sorted list of credit card numbers.&lt;br /&gt;
&lt;br /&gt;
#----- Write the file -----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def generate_data():&lt;br /&gt;
&lt;br /&gt;
   line_cnt    =    3   # Counts the number of lines in the file&lt;br /&gt;
   tx_id       =    0   # CC Transaction ID&lt;br /&gt;
   gen_cnt     =    0   # No of cards for which data was generated&lt;br /&gt;
   body_cnt    =    0   # No of card entries generated&lt;br /&gt;
   total_cost  =    0.0 # Total costs generated&lt;br /&gt;
&lt;br /&gt;
   no_cards    = len(cc_list)&lt;br /&gt;
&lt;br /&gt;
   sift = open(&amp;quot;XXXXXX.SFT&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
   sift.write(header)&lt;br /&gt;
&lt;br /&gt;
   for i in range(no_cards): &lt;br /&gt;
      card_no = cc_list[i]&lt;br /&gt;
      user    = cc_user_map[card_no]&lt;br /&gt;
      aps     = user.APS&lt;br /&gt;
      name    = user.Name&lt;br /&gt;
      name_25 = name.ljust(25)&lt;br /&gt;
      name_26 = name.ljust(26)&lt;br /&gt;
&lt;br /&gt;
      no_tx   = random.randint(0, max_no_tx)&lt;br /&gt;
&lt;br /&gt;
      if no_tx &amp;gt; 0:&lt;br /&gt;
         if debug_flg: print card_no&lt;br /&gt;
         gen_cnt += 1&lt;br /&gt;
&lt;br /&gt;
      tx_idx  = 0&lt;br /&gt;
&lt;br /&gt;
      while tx_idx &amp;lt; no_tx:&lt;br /&gt;
         cost        = random.weibullvariate(alpha=3.0,beta=1) * 20.0&lt;br /&gt;
         description = &amp;quot;Description for transaction %05d&amp;quot;.ljust(167) % tx_id&lt;br /&gt;
&lt;br /&gt;
         total_cost += cost&lt;br /&gt;
&lt;br /&gt;
         sift.write(body_1 %(card_no, name, aps, cost, cost, random.choice([&amp;quot;060901&amp;quot;, &amp;quot;060831&amp;quot;]), description))  &lt;br /&gt;
&lt;br /&gt;
         line_cnt   += 1&lt;br /&gt;
         tx_idx     += 1&lt;br /&gt;
         tx_id      += 1&lt;br /&gt;
         body_cnt   += 1&lt;br /&gt;
&lt;br /&gt;
         sift.write(body_2 %(card_no, name_25, aps))&lt;br /&gt;
&lt;br /&gt;
      line_cnt  +=1&lt;br /&gt;
&lt;br /&gt;
   line_cnt +=2&lt;br /&gt;
&lt;br /&gt;
   sift.write(footer % line_cnt)&lt;br /&gt;
   sift.close() &lt;br /&gt;
&lt;br /&gt;
   print &amp;quot;Generated %d cc entries for %d cards with total cost of $%8.2f&amp;quot; % (body_cnt, gen_cnt, total_cost)&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def process():&lt;br /&gt;
   read_user_data()&lt;br /&gt;
   gen_cc_list()&lt;br /&gt;
   generate_data()&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Usage = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  Usage: AMEX_file.py  [--help] [--logfile=&amp;lt;filename&amp;gt;] [--date=&amp;lt;DATE&amp;gt;] [--verbose]&lt;br /&gt;
&lt;br /&gt;
  Generates AMEX data file for import to SAP&amp;quot;    &lt;br /&gt;
&lt;br /&gt;
  e.g:&lt;br /&gt;
&lt;br /&gt;
    $ ./AMEX__file.py&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def usage():&lt;br /&gt;
    print &amp;gt;&amp;gt; sys.stderr, Usage&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def main(argv):&lt;br /&gt;
   global debug_flg&lt;br /&gt;
   global verbose_flg&lt;br /&gt;
   global logfile&lt;br /&gt;
   global target_date&lt;br /&gt;
&lt;br /&gt;
   try:&lt;br /&gt;
      opts, args = getopt.getopt(argv, &amp;quot;dhl:u:t&amp;quot;,&lt;br /&gt;
                     [&amp;quot;date=&amp;quot;, &amp;quot;debug&amp;quot;, &amp;quot;help&amp;quot;, &amp;quot;logfile=&amp;quot;, &amp;quot;verbose&amp;quot;])&lt;br /&gt;
   except getopt.GetoptError:&lt;br /&gt;
      usage()&lt;br /&gt;
      sys.exit(2)&lt;br /&gt;
   else:&lt;br /&gt;
      for opt, arg in opts:&lt;br /&gt;
         if opt in (&amp;quot;-d&amp;quot;, &amp;quot;--debug&amp;quot;):&lt;br /&gt;
            debug_flg = True&lt;br /&gt;
         elif opt in (&amp;quot;-D&amp;quot;, &amp;quot;--date&amp;quot;):&lt;br /&gt;
            target_date = arg&lt;br /&gt;
         elif opt in (&amp;quot;-h&amp;quot;, &amp;quot;--help&amp;quot;):&lt;br /&gt;
            usage()&lt;br /&gt;
            sys.exit(0)&lt;br /&gt;
         elif opt in (&amp;quot;-l&amp;quot;, &amp;quot;--logfile&amp;quot;):&lt;br /&gt;
            logfile = arg&lt;br /&gt;
         elif opt in (&amp;quot;-v&amp;quot;, &amp;quot;--verbose&amp;quot;):&lt;br /&gt;
            verbose_flg = True&lt;br /&gt;
&lt;br /&gt;
   process()&lt;br /&gt;
 &lt;br /&gt;
#------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
   main(sys.argv[1:])&lt;br /&gt;
&lt;br /&gt;
#------------------------------------------------------------------------&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Generate AMEX Transaction Data===&lt;br /&gt;
&lt;br /&gt;
An early and very simple version of the script...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
EMAIL = &amp;quot;xxx@xxx.com.au&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fmt_amex = &amp;quot;&amp;quot;&amp;quot;\&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def gen_amex(day):&lt;br /&gt;
   print &amp;quot;Generating CBA for date - %s&amp;quot; % day&lt;br /&gt;
   ofd = open(&amp;quot;%s.txt&amp;quot; % day, &amp;quot;w+&amp;quot;)&lt;br /&gt;
   ofd.write(fmt_amex % (day, ))&lt;br /&gt;
   ofd.close()&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
dates = [&amp;#039;070612&amp;#039;, &amp;#039;070613&amp;#039;, &amp;#039;070614&amp;#039;, &amp;#039;070615&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
for day in dates:&lt;br /&gt;
   gen_amex(day)&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:LoadTesting]]&lt;br /&gt;
[[Category:Python]]&lt;/div&gt;</summary>
		<author><name>PeterHarding</name></author>
	</entry>
</feed>