Ignore:
Timestamp:
Jan 12, 2012, 12:58:40 AM (12 years ago)
Author:
Jessica B. Hamrick <jhamrick@…>
Branches:
no-cups
Children:
609a9b0
Parents:
190bfb4
git-author:
Jessica B. Hamrick <jhamrick@…> (01/12/12 00:58:40)
git-committer:
Jessica B. Hamrick <jhamrick@…> (01/12/12 00:58:40)
Message:

Test cases for playing/pausing/stopping jobs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • server/lib/gutenbach/server/player.py

    r345c476 r2620618  
    1818            self._callback = None
    1919            self._paused = False
     20            self._done = False
     21            self._dryrun = False
     22            self._dryrun_time = 0.5
    2023
    2124    @property
    2225    def is_playing(self):
    2326        with self.lock:
    24             playing = self.player and self.player.poll() is None
     27            if self._dryrun:
     28                playing = self.isAlive() and not self.is_done
     29            else:
     30                playing = self.isAlive() and \
     31                          not self.is_done and \
     32                          self.player is not None and \
     33                          self.player.poll() is None
    2534        return playing
    2635
     
    3342    @property
    3443    def is_done(self):
    35         with self.lock:
    36             done = self.player and self.player.poll() is not None
    37         return done
     44        return self._done
    3845
    3946    @property
     
    5057       
    5158        self.mplayer_play()
     59        self._done = True
    5260        with self.lock:
    5361            if self.callback:
     
    6068        logger.info("playing file '%s'" % self.fh.name)
    6169        self._paused = False
     70
     71        if self._dryrun:
     72            step = 0.01
     73            while self._dryrun_time > 0:
     74                time.sleep(step)
     75                self._dryrun_time -= step
     76                while self.is_paused:
     77                    time.sleep(0.01)
     78            return
    6279       
    6380        # open mplayer
     
    7996
    8097        logger.info("mplayer finished with code %d" % self.player.returncode)
    81 
     98       
    8299        # get output from mplayer and log it
    83100        with self.lock:
     
    91108
    92109    def mplayer_pause(self):
    93         if not self.isAlive():
    94             return
    95        
    96110        with self.lock:
    97111            if self.is_playing:
    98                 self.player.stdin.write("pause\n")
     112                if not self._dryrun:
     113                    self.player.stdin.write("pause\n")
    99114                self._paused = not(self._paused)
     115                logger.info("paused: %s", self.is_paused)
     116            else:
     117                logger.warning("trying to pause non-playing job")
    100118               
    101119    def mplayer_stop(self):
    102         if not self.isAlive():
    103             return
    104        
    105120        with self.lock:
    106121            if self.is_playing:
    107                 self.player.stdin.write("quit\n")
     122                if not self._dryrun:
     123                    self.player.stdin.write("quit\n")
     124                else:
     125                    self._dryrun_time = 0.0
     126                logger.info("stopped")
     127            else:
     128                logger.warning("trying to stop non-playing job")
Note: See TracChangeset for help on using the changeset viewer.