#!/bin/sh  
# \
exec oagtclsh "$0" "$@"

set auto_path [linsert $auto_path 0  /usr/local/oag/apps/lib/$env(HOST_ARCH)]
set auto_path [linsert $auto_path 0 /usr/local/oag/lib_patch/$env(HOST_ARCH)]

cd /home/helios/oagData/sr/orbitControllaw/lattices/default
set config1 ""
set config2 ""
set args $argv
APSParseArguments {config1 config2}

set p1 [string index $config1 0]
set p2 [string index $config2 0]
if {$p1!=$p2} {
    puts stderr "Error $config1 and $config2 plane are different!"
    exit 1
}
set mode1 [exec sdds2stream -page=1 -par=PVType $config1/config]
set mode2 [exec sdds2stream -page=1 -par=PVType $config2/config]
if {$mode1!=$mode2} {
    puts stderr "Error $config1 and $config2 pv type is different"
    exit 1
}

set fileList {irm definitions.ms definitions.mswAve definitions.msAve enables FFdefs inUse  notUse}


if {$mode1=="DP"} {
    lappend fileList corrWaveform ffWaveform bpmWaveform waveformTest
    if {$p1=="h"} {
        lappend fileList DPHtests
    } else {
        lappend fileList DPVtests
    }
}

foreach file $fileList {
    if [catch {exec sddsdiff $config1/$file $config2/$file -compareCommon=col } result] {
        puts stderr "Error: $result"
        exit 1
    }
}


set tmpRoot /tmp/[APSTmpString]
foreach file {config despike tests} col {Name ControlName ControlName} {
    if [catch {exec sddssort $config1/$file $tmpRoot.1 -col=$col -numericHigh
        exec sddssort $config2/$file $tmpRoot.2 -col=$col -numericHigh
        exec sddsdiff -compareCommon=col  $tmpRoot.1 $tmpRoot.2 } result] {
        puts stderr "Error: $config1/$file and $config2/$file are different: $result"
        exit 1
    }
}

if {$mode1=="DP"} {
    if [catch {exec sddsprocess $config1/corrRangeError.tests -scan=col,Value,ValueString,%lf -pipe=out \
                 | sddsconvert -pipe=in -retain=col,ControlName,Value $tmpRoot.corr1
        exec sddsprocess $config2/corrRangeError.tests -scan=col,Value,ValueString,%lf -pipe=out \
                 | sddsconvert -pipe=in -retain=col,ControlName,Value $tmpRoot.corr2 } result] {
        puts stderr "Error: $result"
        exit 1
    }
    if [catch {exec sddsdiff $tmpRoot.corr1 $tmpRoot.corr2 -col=*} result] {
        puts stderr "Error: $config1 and $config2 corrRangeError.tests differ: $result"
    }
}
puts "passed."

exit 0
