bulk fake customer insert
[freeside.git] / bin / customer-faker
1 #!/usr/bin/perl
2
3 use strict;
4 use Data::Faker;
5 use FS::UID qw(adminsuidsetup);
6 use FS::cust_main;
7
8 my $agentnum = 1;
9 my $refnum = 1;
10
11 my $user = shift or die &usage;
12 my $num = shift or die &usage;
13 adminsuidsetup($user);
14
15 my $onum = $num;
16 my $start = time;
17
18 until ( $num-- <= 0 ) {
19
20   my $faker = new Data::Faker;
21
22   my $cust_main = new FS::cust_main {
23     'agentnum' => $agentnum,
24     'refnum'   => $refnum,
25     'first'    => $faker->first_name,
26     'last'     => $faker->last_name,
27     'company'  => ( $num % 2 ? $faker->company. ', '. $faker->company_suffix : '' ), #half with companies..
28     'address1' => $faker->street_address,
29     'city'     => 'Tofutown', #missing, so everyone is from tofutown# $faker->city,
30     'state'    => $faker->us_state_abbr,
31     'zip'      => $faker->us_zip_code,
32     'country'  => 'US',
33     'daytime'  => $faker->phone_number,
34     'night'    => $faker->phone_number,
35     #forget it, these can have extensions# 'fax'      => ( $num % 2 ? $faker->phone_number : '' ), #ditto
36     #bah, forget shipping addresses
37     'payby'    => 'BILL',
38     'payip'    => $faker->ip_address,
39   };
40
41   # could insert invoicing_list and other stuff too..  hell, could insert
42   # packages, services, more
43   # but i just wanted 10k customers to test the pager and this was good enough
44
45   my $error = $cust_main->insert;
46   die $error if $error;
47
48 }
49
50 my $end = time;
51
52 my $sec = $end-$start;
53 my $persec = $onum / $sec;
54 print "$onum customers inserted in $sec seconds ($persec customers/sec)\n";
55
56 #---
57
58 sub usage {
59   die "Usage:\n\n  customer-faker user num_fakes\n";
60 }