Esempio n. 1
0
    def _isSlewingDisabled_BOSS_APOGEE(self,
                                       bossState,
                                       apogeeState,
                                       expect=None,
                                       index=0):
        """Tests isSlewingDisabled for BOSS and APOGEE."""

        self.cmdState.cmd = self.cmd
        self.cmdState.index = index

        if expect is None:
            expect = ('slewing disallowed for APOGEE&MaNGA, ',
                      'BOSS_exposureState={0}'.format(bossState.upper()),
                      'APOGEE_exposureState={0}'.format(
                          apogeeState.capitalize()))

        sopTester.updateModel('boss', TestHelper.bossState[bossState])
        sopTester.updateModel('apogee', TestHelper.apogeeState[apogeeState])

        result = self.cmdState.isSlewingDisabled()

        if result is False:
            self.assertFalse(result)
        else:
            if isinstance(expect, str):
                expect = [expect]
            for expectItem in expect:
                self.assertIsInstance(expectItem, str)
                self.assertIn(expectItem, result)

        return result
Esempio n. 2
0
 def test_goto_field_boss_flat_on_fails(self):
     """Fail on ff.on, but still readout the arc."""
     sopTester.updateModel('mcp',TestHelper.mcpState['all_off'])
     cmdState = self.actorState.gotoField
     cmdState.reinitialize(self.cmd)
     self.cmd.failOn = "mcp ff.on"
     self._goto_field_boss(16,68,0,1,cmdState,didFail=True,finish=True)
Esempio n. 3
0
 def test_goto_field_boss_ffs_open_fails(self):
     """Fail on ffs.open, but still readout flat."""
     sopTester.updateModel('mcp',TestHelper.mcpState['all_off'])
     cmdState = self.actorState.gotoField
     cmdState.reinitialize(self.cmd)
     self.cmd.failOn = "mcp ffs.open"
     self._goto_field_boss(21,98,1,1,cmdState,didFail=True,finish=True)
Esempio n. 4
0
 def test_goto_field_boss_ne_on_fails(self):
     """Fail on ne.on."""
     sopTester.updateModel('mcp',TestHelper.mcpState['all_off'])
     cmdState = self.actorState.gotoField
     cmdState.reinitialize(self.cmd)
     self.cmd.failOn = "mcp ne.on"
     self._goto_field_boss(6,15,0,1,cmdState,didFail=True,finish=True)
Esempio n. 5
0
 def _do_shutter(self, position):
     """Test commanding the shutter open/closed."""
     sopTester.updateModel('apogee', TestHelper.apogeeState['unknown'])
     cmdVar = apogeeThread.do_shutter(self.cmd, myGlobals.actorState,
                                      position)
     self._check_cmd(1, 0, 0, 0, finish=False)
     self.assertFalse(cmdVar.didFail)
Esempio n. 6
0
 def test_goto_gang_change_apogee_fails_domeflat(self):
     """Tests shutter open, FFS close, expose -> fail."""
     myGlobals.actorState.survey = sopActor.APOGEE
     self.cmd.failOn = "apogee expose time=50.0 object=DomeFlat"
     sopTester.updateModel('apogee', TestHelper.apogeeState['B_open'])
     sopTester.updateModel('mcp', TestHelper.mcpState['apogee_science'])
     self._goto_gang_change(2, 14, 0, 1, didFail=True)
Esempio n. 7
0
 def test_apogee_dome_flat_gang_on_podium_fails(self):
     """Tests fail immediately."""
     name = 'apogeeDomeFlat'
     sopTester.updateModel('mcp', TestHelper.mcpState['all_off'])
     multiCmd = MultiCommand(self.cmd, myGlobals.actorState.timeout + 50,
                             name)
     self._apogee_dome_flat(0, 5, 0, 0, multiCmd, finish=True, didFail=True)
Esempio n. 8
0
 def test_goto_gang_change_apogee_fails_slew(self):
     """Tests failed slew."""
     self.cmd.failOn = "tcc axis init"
     myGlobals.actorState.survey = sopActor.APOGEE
     sopTester.updateModel('apogee', TestHelper.apogeeState['B_open'])
     sopTester.updateModel('mcp', TestHelper.mcpState['apogee_science'])
     self._goto_gang_change(5, 21, 0, 2, didFail=True)
Esempio n. 9
0
 def test_apogee_dome_flat_enclosure(self):
     """Tests shutter open, exposure +(ff on, ff off)."""
     name = 'apogeeDomeFlat'
     sopTester.updateModel('mcp', TestHelper.mcpState['apogee_parked'])
     multiCmd = MultiCommand(self.cmd, myGlobals.actorState.timeout + 50,
                             name)
     self._apogee_dome_flat(3, 11, 0, 0, multiCmd)
Esempio n. 10
0
 def test_do_apogeemanga_dither_fails_long_exposure(self):
     sopTester.updateModel('mcp', TestHelper.mcpState['apogee_science'])
     sopTester.updateModel('apogee', TestHelper.apogeeState['B_open'])
     self.cmd.failOn = 'boss exposure science itime=900'
     self.cmd.failOnCount = 2
     mangaDither = 'C'
     self._do_apogeemanga_dither(7, 28, 0, 1, mangaDither, didFail=True,
                                 apogee_long=True, surveyMode='APOGEE lead')
Esempio n. 11
0
 def test_isSlewingDisabled_because_exposing(self):
     sopTester.updateModel('boss', TestHelper.bossState['integrating'])
     self.cmdState.nExp = 3
     self.cmdState.index = 2
     self._isSlewingDisabled_because_exposing('BOSS',
                                              1,
                                              'INTEGRATING',
                                              prefix='BOSS_')
Esempio n. 12
0
 def test_isSlewingDisabled_because_alive_BOSS_integrating(self):
     self.cmdState.cmd = self.cmd
     sopTester.updateModel('boss', TestHelper.bossState['integrating'])
     result = self.cmdState.isSlewingDisabled()
     self.assertIsInstance(result, str)
     expect = ('slewing disallowed for APOGEE&MaNGA, '
               'with a sequence in progress')
     self.assertIn(expect, result)
Esempio n. 13
0
 def test_deactivate_guider_decenter_fails(self):
     """
     decenter off
     Will give cmd.error and stage=failed, but won't fail command.
     """
     sopTester.updateModel('guider',TestHelper.guiderState['guiderOnDecenter'])
     self.cmd.failOn="guider decenter off"
     self._deactivate_guider_decenter(1,9,0,2,didFail=True)
Esempio n. 14
0
    def test_gotoField_noScreen(self):

        sopTester.updateModel('guider', TestHelper.guiderState['apogeeLoaded'])
        sopTester.updateModel('platedb', TestHelper.platedbState['apogee'])
        stages = ['slew', 'cleanup']
        expect = {'ra': 20, 'dec': 30, 'moveScreen': False}

        self._gotoField(1, expect, stages, 'noScreen')
Esempio n. 15
0
 def test_goto_field_apogee_no_slew_shutter_open(self):
     """
     shutter close, FF on, guider flat, FF off, open FFS
     3xguider axes off, guider on
     """
     sopTester.updateModel('apogee',TestHelper.apogeeState['B_open'])
     cmdState = self.actorState.gotoField
     cmdState.reinitialize(self.cmd)
     cmdState.doSlew = False
     self._goto_feld_apogee(9,34,0,0,cmdState)
Esempio n. 16
0
    def test_gotoField_apogee_default(self):

        sopTester.updateModel('guider', TestHelper.guiderState['apogeeLoaded'])
        sopTester.updateModel('platedb', TestHelper.platedbState['apogee'])

        stages = ['slew', 'cleanup']

        expect = {'ra': 20, 'dec': 30}

        self._gotoField(1, expect, stages, '')
Esempio n. 17
0
 def test_goto_gang_change_apogee_noDomeFlat(self):
     """Tests B open, no dome flat."""
     myGlobals.actorState.survey = sopActor.APOGEE
     sopTester.updateModel('mcp', TestHelper.mcpState['apogee_science'])
     sopTester.updateModel('apogee', TestHelper.apogeeState['B_open'])
     cmdState = self.actorState.gotoGangChange
     cmdState.reinitialize(self.cmd)
     cmdState.doDomeFlat = False
     slewThread.goto_gang_change(self.cmd, cmdState, myGlobals.actorState)
     self._check_cmd(5, 11, 0, 0, True)
Esempio n. 18
0
 def _do_dither(self, dither):
     """Test moving the dither position."""
     sopTester.updateModel('apogee', TestHelper.apogeeState['unknown'])
     cmdVar = apogeeThread.do_dither(self.cmd, myGlobals.actorState, dither)
     self._check_cmd(1, 0, 0, 0, finish=False)
     self.assertEquals(
         dither,
         myGlobals.actorState.models['apogee'].keyVarDict['ditherPosition']
         [1])
     self.assertFalse(cmdVar.didFail)
Esempio n. 19
0
 def test_goto_field_apogee_no_slew_decenter_off(self):
     """
     FF on, guider flat, FF off, open FFS
     guider decenter off, 3xguider axes off, guider on
     """
     sopTester.updateModel('mcp',TestHelper.mcpState['all_off'])
     sopTester.updateModel('guider',TestHelper.guiderState['guiderOnDecenter'])
     cmdState = self.actorState.gotoField
     cmdState.reinitialize(self.cmd)
     cmdState.doSlew = False
     self._goto_feld_apogee(9,35,0,0,cmdState)
Esempio n. 20
0
    def test_goto_gang_change_apogee_bypass_gangToPodium(self):
        """Tests bypass gangToPodium.

        Testing for complaints from the observers about
        gang bypass and gang changes.
        """
        self._prep_bypass('gangToPodium', clear=True)
        myGlobals.actorState.survey = sopActor.APOGEE
        sopTester.updateModel('mcp', TestHelper.mcpState['apogee_science'])
        sopTester.updateModel('apogee', TestHelper.apogeeState['B_open'])
        self._goto_gang_change(4, 14, 3, 0)
Esempio n. 21
0
 def test_goto_field_boss_calibs(self):
     """
     see cmd_calls/TestGotoField.txt for command list.
     """
     sopTester.updateModel('mcp',TestHelper.mcpState['all_off'])
     cmdState = self.actorState.gotoField
     cmdState.reinitialize(self.cmd)
     cmdState.doSlew = False
     cmdState.doHartmann = False
     cmdState.doGuider = False
     self._goto_field_boss(10,55,0,0,cmdState)
Esempio n. 22
0
 def test_goto_field_boss_hartmann_fails(self):
     """Fail on hartmann."""
     sopTester.updateModel('mcp',TestHelper.mcpState['all_off'])
     cmdState = self.actorState.gotoField
     cmdState.reinitialize(self.cmd)
     self.cmd.failOn = "hartmann collimate"
     # TBD: NOTE: Something wrong with this test!
     # Should produce 0 errors, but the failure usually (not always!)
     # cascades through to hgcd lampThread.
     # I'm pretty sure that's not correct.
     self._goto_field_boss(9,33,0,1,cmdState,didFail=True,finish=True)
Esempio n. 23
0
 def test_goto_field_boss_slew(self):
     """
     axis status, axis init, slew
     """
     sopTester.updateModel('mcp',TestHelper.mcpState['all_off'])
     cmdState = self.actorState.gotoField
     cmdState.reinitialize(self.cmd)
     cmdState.doGuider = False
     cmdState.doHartmann = False
     cmdState.doCalibs = False
     cmdState.arcTime = 0
     cmdState.flatTime = 0
     self._goto_field_boss(3,25,0,0,cmdState)
Esempio n. 24
0
 def test_goto_field_boss_hartmann(self):
     """
     ne on, hgcd on, ff off, doHartmann, ne off, hgcd off
     """
     sopTester.updateModel('mcp',TestHelper.mcpState['all_off'])
     cmdState = self.actorState.gotoField
     cmdState.reinitialize(self.cmd)
     cmdState.doSlew = False
     cmdState.doCalibs = False
     cmdState.arcTime = 0
     cmdState.flatTime = 0
     cmdState.doGuider = False
     self._goto_field_boss(5,28,0,0,cmdState)
Esempio n. 25
0
 def test_do_manga_dither_after_sequence(self):
     """See ticket #2107 for the bug that this tickles."""
     sopTester.updateModel('mcp', TestHelper.mcpState['boss_science'])
     dither = 'N'
     cmdState = self.actorState.doMangaSequence
     cmdState.reinitialize(self.cmd)
     cmdState.count = 1
     cmdState.dithers = 'NSE'
     cmdState.reset_ditherSeq()
     self.cmd.verbose = False
     masterThread.do_apogeemanga_sequence(self.cmd, cmdState, myGlobals.actorState)
     self.cmd.reset()
     self.cmd.verbose = self.verbose
     self._do_manga_dither(4, 27, 0, 0, dither=dither)
Esempio n. 26
0
    def _goto_gang_change(self,
                          nCall,
                          nInfo,
                          nWarn,
                          nErr,
                          finish=True,
                          didFail=False):
        """Helper functions for the gotoGangChange tests."""

        sopTester.updateModel('tcc', TestHelper.tccState['tracking'])
        cmdState = self.actorState.gotoGangChange
        cmdState.reinitialize(self.cmd)
        slewThread.goto_gang_change(self.cmd, cmdState, myGlobals.actorState)
        self._check_cmd(nCall, nInfo, nWarn, nErr, finish, didFail)
Esempio n. 27
0
 def test_apogee_dome_flat_shuter_close_fails(self):
     """Tests shutter open, ffs close -> fail."""
     name = 'apogeeDomeFlat'
     self.cmd.failOn = "apogee shutter close"
     sopTester.updateModel('mcp', TestHelper.mcpState['apogee_science'])
     multiCmd = MultiCommand(self.cmd, myGlobals.actorState.timeout + 50,
                             name)
     self._apogee_dome_flat(4,
                            15,
                            0,
                            1,
                            multiCmd,
                            finish=True,
                            didFail=True)
Esempio n. 28
0
    def test_goto_field_cartridge_mismatch(self):
        """Tests gotoField if there is a mismatch between MCP and guider."""

        sopTester.updateModel('guider', TestHelper.guiderState['bossLoaded'])

        mcpState = TestHelper.mcpState['boss_science']
        mcpState.update({'instrumentNum': [15]})
        sopTester.updateModel('mcp', mcpState)

        cmdState = self.actorState.gotoField
        cmdState.reinitialize(self.cmd)

        masterThread.goto_field(self.cmd, cmdState, myGlobals.actorState)
        self._check_cmd(0, 13, 0, 0, finish=True, didFail=True)
Esempio n. 29
0
 def test_goto_field_boss_guider(self):
     """
     Start with decentered guiding on, to check that we clear it.
     ff on, guider flat, ff off, ffs open 3xguider axes off, decenter off, guider on
     """
     sopTester.updateModel('mcp',TestHelper.mcpState['all_off'])
     sopTester.updateModel('guider',TestHelper.guiderState['guiderOnDecenter'])
     cmdState = self.actorState.gotoField
     cmdState.reinitialize(self.cmd)
     cmdState.doSlew = False
     cmdState.doHartmann = False
     cmdState.doCalibs = False
     cmdState.arcTime = 0
     cmdState.flatTime = 0
     self._goto_field_boss(9,35,0,0,cmdState)
Esempio n. 30
0
    def test_do_apogee_science_1000s_after_500s_cart7(self):
        """Tests if expTime is set to 1000s after a normal length exposure."""

        sopTester.updateModel('platedb',
                              TestHelper.platedbState['apogeeLeadCart7'])
        self._update_cart(7, 'APOGEE')
        cmdState = self.actorState.doApogeeScience
        cmdState.reinitialize(self.cmd)
        self.assertEqual(cmdState.expTime, 500)
        self.assertEqual(cmdState.keywords['expTime'], 500)

        sopTester.updateModel('platedb',
                              TestHelper.platedbState['apogeeLead1000sCart7'])
        self._update_cart(7, 'APOGEE')
        cmdState = self.actorState.doApogeeScience
        cmdState.reinitialize(self.cmd)
        self.assertEqual(cmdState.expTime, 1000)
        self.assertEqual(cmdState.keywords['expTime'], 1000)