Proposal for Handling M&C Software Versions for the GBT

Mark H. Clark

November 15, 2000

Goal

Provide a trail of defined, working releases of the GBT control software.

Nomenclature

Source directories are described by a two-digit string, M.E, e.g., 3.2. The E represents an enhancement and the M a major enhancement.  These directories are generated whenever  developers feel  an enhancement or set of enhancements is ready for full integration testing on the telescope or the mockup.  Installation directories are described by three-digit strings, M.E.D, such as 3.2.2, where the D tracks the debugging of the version.  CVS revisions are labeled by this installation string, i.e., "VM_E_D."  The installation directory M.E.D may only be installed from its associated source directory M.E.

A typical sequence of events would be as follows:  I have modified the DCR in my development area to optimize the latency between scans and have tested as well as I can separate from the telescope.  The current version running the telescope is 3.2.4.  I inform the other M&C developers that I plan to create a new version 3.3 with the updated DCR.  Joe has changes to the FEM model which he would like to make part of the same version.  I check out a version  with the new code for the DCR and FEM into a source directory named 3.3.  It is installed into 3.3.0.  During test time the telescope version is switched from 3.2.4 to 3.3.0 using setVersion.  During testing on the telescope (or perhaps in attempting to build 3.3) various bugs are found and fixed in the 3.3 source directory.  After testing reaches some criterion specific to the goals of this version, e.g., an overnight run using the DCR and pointing turned on, and there are no known bugs resulting from the enhancements, the files in 3.3 are committed, labeled "V3_3_0,"  reinstalled in 3.3.0 and installed in 3.3.1.   Note that the developer may commit any changes he or she wishes, but only source revisions which have a tested installation are labeled.  Installation 3.3.0 is now frozen.  Any new bugs are fixed in the 3.3 source directory and installed in 3.3.1.  When this version reaches some criterion of stability or usefulness, then the files in 3.3 are committed, labeled "V3_3_1,"  reinstalled in 3.3.1 and installed in 3.3.2.  Future bug fixes are installed in 3.3.2.  This continues as long as this set of enhancements requires bug fixes.

Various "favorite" versions could be also installed in mockup for use in the lab or for simulations.

Scenarios

(Examples from Richard Prestage.)
 
  • I am the main scheduled observer. I want to get on with my observations, using the K-band receiver and the Spectrometer, and I don't want anyone  else to mess me about. I run from gbt, version 3.4.5.
  • I am an engineer checking out the Q-band receiver through CLEO in the lab while the primary observer is as in above. I need the latest mods to the Q-band Manager, which include the new version of the receiver base class which accommodates our new calibration scheme. I don't want to mess the observer about. I run from mockup using version found in the  test installation, or one set up specifically for the engineer by the developer, e.g., called Richard.
  • The Q-band receiver is all checked out and working, but not yet updated in any version source directory.   We get an urgent request to install its hardware and software on the telescope.  At the same time as the Q-band manager developments were being made, Joe was upgrading the Antenna manager, but his mods are only half finished. He had made his mods in his own area, I had made mine in my area.   I put mine into a new source directory 3.5  and install in 3.5.0 so the observer can use the receiver.
  • I am a member of the M&C group who has modified the Spectral Processor to write FITSVER=2.7 FITS files. The primary observer is using 3.4.5. Because this is a developmental version of the Spectral Processor Manager, I have made my changes in my area. I want to take a whole pile of FITS files to exercise all modes of the Spectral Processor, without annoying the primary observer. I don't care what IF inputs I have, I'd like to generate switching signals internally, and the observer only wants Spectrometer internal switching signals.  I ask operations' permission to use the spectral processor while the telescope is being used.  I install my spectral processor code into the mockup in either test or my area, reboot the spectral processor to run out of mockup rather than gbt, and do my thing.  When completed, I reboot the spectral processor to run from gbt and report to operations that I am finished.
  • The primary observer is using L-band, the Berkely Pulsar Processor, 3.2.m. I am an engineer trying to track down a baseline stability problem in the K band receiver using the Spectrometer as the backend. I don't care where the antenna is pointed, but I need to use the real K-band receiver and IF system. I want to use the Scan Coordinator, Archivist, etc, and a glish script which will execute multiple scans. I don't want the observer to notice that I am there.  If I want to use some of the same equipment that the observer is using then I will have to wait for test time; if, however, the equipment is mutually exclusive, then -- as with the spectral processor above -- one set can be run from gbt and the other from mockup.
  • The observer from the night before discovers a bug in the Spectrometer Manager. I think I know how to make a fix, but I am not sure if it will work. The observer says she is willing to try it.  I make the fix in M.E.D+1 and continue trying to make the fix with the observer's permission.  When these changes are completed so they may be committed and labeled depends on the criterion:  if it is simply the user saying that the problem is solved, then the changes are committed, labeled "VM_E_D+1," reinstalled in M.E.D+1 and, for future bug fixes, installed into M.E.D+2.
  • It is three weeks later. We are up to version M.E.D+4. A new observer  comes along, and discovers that the "fix" has made things worse for his configuration, and he wants to go back (at 2 am in the morning) to M.E.D+1, which he is convinced worked for him.  To return to an earlier version (or to change versions in general), one brings down all of the M&C daemons, runs setVersion, brings the daemons back up, and reboots the single board computers:
  • su monctrl
    source /home/gbt/gbt.bash
    cd /home/gbt
    ssh fornax TaskMaster fornax systemstop
    ssh vega TaskMaster vega systemstop
    ssh gemini TaskMaster gemini systemstop
    setVersion M.E.D+1
    ssh fornax TaskMaster fornax systemstart /home/gbt/etc/config/fornaxProc.conf
    ssh vega TaskMaster vega systemstart /home/gbt/etc/config/vegaProc.conf
    ssh gemini TaskMaster gemini systemstart /home/gbt/etc/config/geminiProc.conf
    cleo ResetBox
    then press Reset All Ports on All Boxes
     

    Glossary

    source
    a set of C++, C, makefiles, and associated files/directories under CVS for building executibles.
    installation
    a directory tree holding all the files necessary to run the monitor and control software.
    version
    a labeled set of source or executable files defined under CVS which together provide a working system
    enhancement
    a modification which provides new capabilities; such as integration of the active surface into the antenna, a new Manager is added, switching signals are handled differently (better?), all Samplers have code to tag bad data, or the DCR uses cfitsio.
    major enhancement
    an enhancement that affects the capabilities of the system as a whole or changes the interfaces between modules such as the text of messages are stored external to the compiled code, a consistent format for FITS files, a change in hardware architecture, or a base library changes its public methods.
    gbt
    a set of installation directory trees for running equipment on the telescope.
    mockup
    a set of installation directory trees for running equipment in the lab or for running simulators.
    integration directory
    a set of source directory trees which accepts the most recent enhancements and bug fixes from version and development source trees through CVS updates.
    test installation
    a set of directories which accepts the installation of the most recent enhancements and bug fixes from version, test and development source trees.