# This file was written by Yao Qi <qiyao@cn.ibm.com>.

set testfile "count-record"
set srcfile ${testfile}.c
set binfile ${testfile}

verbose "compiling source file now....."
# Build the shared libraries this test case needs.
if  { [ ltrace_compile "${srcdir}/${subdir}/${testfile}.c" "${objdir}/${subdir}/${binfile}" executable {debug} ] != "" } {
     send_user "Testcase compile failed, so all tests in this file will automatically fail.\n"
}

# set options for ltrace.
ltrace_options "-c"

# Run PUT for ltrace.
set exec_output [ltrace_runtest $objdir/$subdir $objdir/$subdir/$binfile]

# Check the output of this program.
verbose "ltrace runtest output: $exec_output\n"
if [regexp {ELF from incompatible architecture} $exec_output] {
	fail "32-bit ltrace can not perform on 64-bit PUTs and rebuild ltrace in 64 bit mode!"
	return
} elseif [ regexp {Couldn't get .hash data} $exec_output ] {
	fail "Couldn't get .hash data!"
	return
}

#
#  This is a sample output and Verify the forth and fifth column.
#
#  13.31    0.001051        1051         1 rmdir
#  12.81    0.001012        1012         1 fopen
#  10.32    0.000815         407         2 remove
#   9.56    0.000755         755         1 mkdir
#   7.86    0.000621         621         1 fseek
#   6.86    0.000542         542         1 fwrite
#   6.60    0.000521         521         1 fclose
#   6.03    0.000476         476         1 rename
#   5.61    0.000443         443         1 symlink
#   5.05    0.000399         399         1 chdir
#   4.80    0.000379         379         1 access
#   4.00    0.000316         316         1 __xstat
#   3.81    0.000301         301         1 getcwd
#   3.39    0.000268         268         1 fread
#

set pattern " 1 rmdir"
ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern
set pattern " 1 fopen"
ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern
set pattern " 2 remove"
ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern
set pattern " 1 mkdir"
ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern
set pattern " 1 fseek"
ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern
set pattern " 1 fwrite"
ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern
set pattern " 1 fclose"
ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern
set pattern " 1 rename"
ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern
set pattern " 1 symlink"
ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern
set pattern " 1 chdir"
ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern
set pattern " 1 access"
ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern
set pattern " 1 getcwd"
ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern
set pattern " 1 fread"
ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern

