#! /use/bin/perl -w
#
#
#*****************************************************************************
use DBI;
use strict;
use diagnostics;

if (@ARGV < 3)
{
  print "\n";
  print " test.pl  <database name> <database account> <database account password>\n";
  print "\n";
  exit;
}

my $database_name = $ARGV[0];
my $db_user_name = $ARGV[1];
my $db_password = $ARGV[2];
my $data_source = "dbi:Oracle:$database_name";

#
# Theoretically this isn't possible since the calling shell script would have assigned 
# some default password value before calling this perl script.
#
if (!defined($db_password))
{
  $db_password = "password";
}
if (!defined($db_user_name))
{
  $db_user_name = "userid";
}
if (!defined($database_name))
{
  $database_name = "db";
}

#
# Connect to the NPM database
#
my $dbh = DBI->connect($data_source,
                    $db_user_name,
                    $db_password,
                    { RaiseError => 1, AutoCommit => 1 , ora_session_mode => 0}) 
                    || die "Could not connect to database '$database_name'\n";
$dbh->{RowCacheSize} = 100;

my $rc; # return code

    my $func = $dbh->prepare(q{
INSERT INTO NPMADMIN.temp ( ACCT_STATUS_TYPE, NAS_USER_NAME, NAS_IDENTIFIER, NAS_IP_ADDRESS,
ACCT_SESSION_ID, FRAMED_IP_ADDRESS, SERVICE_TYPE, FRAMED_PROTOCOL, MEDIUM_TYPE, NAS_PORT_TYPE,
NAS_PORT, NAS_PORT_ID, NAS_REAL_PORT, ACCT_DELAY_TIME, ACCT_SESSION_TIME, ACCT_TIME_STAMP,
RATE_LIMIT_RATE, RATE_LIMIT_BURST, POLICE_RATE, POLICE_BURST, FILTER_ID, FORWARD_POLICY,
HTTP_REDIRECT_PROFILE_NAME, CONTEXT_NAME, SESSION_TIMEOUT, IDLE_TIMEOUT, RB_DHCP_MAX_LEASES,
MULTICAST_SEND, MULTICAST_RECEIVE, MULTICAST_MAX_GROUPS, IGMP_PROFILE_NAME,
QOS_POLICING_POLICY_NAME, QOS_METERING_POLICY_NAME, QOS_PQ_POLICY_NAME, ATM_PROFILE_NAME, PPPOE_URL,
PPPOE_MOTM, PPPOE_IP_ROUTE, PPP_DNS_PRIMARY, PPP_DNS_SECONDARY, PPP_NBNS_PRIMARY,
PPP_NBNS_SECONDARY, ACCT_TERMINATE_CAUSE, SESSION_ERROR_MSG, ACCT_REASON, ACCT_INPUT_OCTETS_64,
ACCT_OUTPUT_OCTETS_64, ACCT_INPUT_PACKETS_64, ACCT_OUTPUT_PACKETS_64, ACCT_MCAST_INPUT_OCTETS_64,
ACCT_MCAST_OUTPUT_OCTETS_64, ACCT_MCAST_INPUT_PACKETS_64,
ACCT_MCAST_OUTPUT_PACKETS_64 ) VALUES ( 
'Start', 'joe', 'ser-1', '127.0.0.1', '0B00FFFF90000010-40647961', NULL, 'Outbound-User'
, NULL, 'DSL', 'Virtual', 201392128, '12/1 clips 20013', NULL, NULL, NULL, 99999999
, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'BASIC', NULL, NULL, 1, NULL, NULL, NULL
, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL) 
    },{ora_check_sql => 0 });
  my $start_time = time;
  print "Start of insert test, time:", $start_time, "\n";
  foreach (1..1500) {
    $func->execute();
  }
  my $end_time = time;
  print "End of insert test, time:", $end_time, "\n"; 
  
  my $difference = $end_time - $start_time;
  print "Time taken: ", $difference, "\n";
#

print "end \n";


$dbh->disconnect;
1;