From: <jr...@us...> - 2014-04-24 13:21:12
|
Revision: 3491 http://sourceforge.net/p/nscldaq/code/3491 Author: jrtomps Date: 2014-04-24 13:21:09 +0000 (Thu, 24 Apr 2014) Log Message: ----------- Issue #1929 Makes eventLogBundle operate without changing directories Modified Paths: -------------- branches/nscldaq-11.0-development/daq/readoutgui/eventLogBundle.tcl branches/nscldaq-11.0-development/daq/readoutgui/eventlog.test Modified: branches/nscldaq-11.0-development/daq/readoutgui/eventLogBundle.tcl =================================================================== --- branches/nscldaq-11.0-development/daq/readoutgui/eventLogBundle.tcl 2014-04-23 16:59:00 UTC (rev 3490) +++ branches/nscldaq-11.0-development/daq/readoutgui/eventLogBundle.tcl 2014-04-24 13:21:09 UTC (rev 3491) @@ -74,7 +74,7 @@ variable loggerPid -1 variable startupTimeout 10 variable shutdownTimeout 30 - variable filePollInterval 100 + variable filePollInterval 1 variable protectFiles 1 # For our status line: @@ -203,14 +203,6 @@ # Utility methods ## -# ::EventLog::_cdCurrent -# -# Change directory to the place current event files should be written. -# -proc ::EventLog::_cdCurrent {} { - cd [::ExpFileSystem::getCurrentRunDir] -} -## # ::EventLog::_computeLoggerSwitches # # @return the command line options the logger should use: @@ -241,6 +233,9 @@ } # If requested get the run number from the GUI and force it: + # Generate run files in the current directory without cd'ing anywhere + append switches " --path=[::ExpFileSystem::getCurrentRunDir]" + if {[DAQParameters::getRunNumberOverrideFlag]} { set run [::ReadoutGUIPanel::getRun] append switches " --run=$run" @@ -482,15 +477,15 @@ if {[::EventLog::_duplicateRun]} { error "Run already has event data or segments" } - ::EventLog::_cdCurrent # Ensure there are no stale synch files: - - file delete -force .exiting - file delete -force .started + set startFile [file join [::ExpFileSystem::getCurrentRunDir] .started] + set exitFile [file join [::ExpFileSystem::getCurrentRunDir] .exited] + file delete -force $startFile + file delete -force $exitFile ::EventLog::_startLogger - ::EventLog::_waitForFile .started $::EventLog::startupTimeout \ + ::EventLog::_waitForFile $startFile $::EventLog::startupTimeout \ $::EventLog::filePollInterval set ::EventLog::expectingExit 0 ::EventLog::_setStatusLine 2000 @@ -508,17 +503,19 @@ # proc ::EventLog::runEnding {} { + set startFile [file join [::ExpFileSystem::getCurrentRunDir] .started] + set exitFile [file join [::ExpFileSystem::getCurrentRunDir] .exited] # ne is used below because the logger could be a pipeline in which case # ::EventLog::loggerPid will be a list of pids which freaks out ==. - if {$::EventLog::loggerPid ne -1} { set ::EventLog::expectingExit 1 - ::EventLog::_waitForFile .exited $::EventLog::shutdownTimeout \ + ::EventLog::_waitForFile $exitFile $::EventLog::shutdownTimeout \ $::EventLog::filePollInterval set ::EventLog::loggerPid -1 ::EventLog::_finalizeRun - file delete -force .exited; # So it's not there next time!! + file delete -force $startFile; # So it's not there next time!! + file delete -force $exitFile; # So it's not there next time!! # Incremnt the run number: Modified: branches/nscldaq-11.0-development/daq/readoutgui/eventlog.test =================================================================== --- branches/nscldaq-11.0-development/daq/readoutgui/eventlog.test 2014-04-23 16:59:00 UTC (rev 3490) +++ branches/nscldaq-11.0-development/daq/readoutgui/eventlog.test 2014-04-24 13:21:09 UTC (rev 3491) @@ -46,6 +46,7 @@ proc ::Diagnostics::Error msg {} proc ::ReadoutGUIPanel::Log {src sev msg} {} +proc ::ReadoutGUIPanel::isRecording {} { return true } proc ::StatusBar::getInstance {} {return fakeStatusBar} #------------------------------------------------------------------------------ @@ -162,6 +163,26 @@ ::EventLog::getFilePollInterval } -result 98765 + +tcltest::test currentDirPassedToSwitches {::EventLog::_computeLoggerSwitches adds --path opt +} -body { + set sw [::EventLog::_computeLoggerSwitches] + set currdir [::ExpFileSystem::getCurrentRunDir] + string match "* --path=$currdir*" $sw +} -result 1 + +tcltest::test startLoggerStaysInPWD {::EventLog::_startLogger remains in pwd } \ +-setup { + set oldpwd [pwd] +} -cleanup { + cd $oldpwd + catch {close $::EventLog::loggerFd} msg +} -body { + ::EventLog::_startLogger + set newpwd [pwd] + set inpwd [string equal $newpwd $oldpwd] +} -result 1 + #------------------------------------------------------------------------------ # Run state transitions with event logging turned on # This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |